原創(chuàng)|行業(yè)資訊|編輯:吳秋紅|2024-05-17 13:54:43.310|閱讀 62 次
概述:本指南解釋了如何在您的項(xiàng)目中加載和初始化HOOPS Exchange以供使用。確保您已經(jīng)按照上一個(gè)教程中所示配置了項(xiàng)目。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
初始化HOOPS交換
本指南解釋了如何在您的項(xiàng)目中加載和初始化以供使用。確保您已經(jīng)按照上一個(gè)教程中所示配置了項(xiàng)目。
HOOPS Exchange是一個(gè)通過C API使用的庫,以頭文件和二進(jìn)制文件的形式提供。主二進(jìn)制文件是一個(gè)名為A3DLIBS.dll、libA3DLIBS.so或A3DLIBS.dylib的共享庫,具體取決于您的操作系統(tǒng)。對于iOS,它是一個(gè)名為A3DLIBS.a的靜態(tài)庫。
要加載C語言庫,您可以在應(yīng)用程序構(gòu)建期間鏈接它,也可以在運(yùn)行時(shí)使用LoadLibrary (Windows)或dlopen(GNU編譯器)等系統(tǒng)調(diào)用手動加載它。使用顯式加載方法。
交換標(biāo)頭
在您的程序中,負(fù)責(zé)初始化HOOPS Exchange的源文件必須包含頭文件A3DSDKLoader.h。只有一個(gè)源文件應(yīng)加載HOOPS Exchange,并且它應(yīng)包含A3DSDKLoader.h。其他項(xiàng)目文件可以包含單個(gè)源文件(如A3DSDKConvert.h),或使用一勞永逸的A3DSDKIncludes.h來包含整個(gè)API。
Linux和macOS開發(fā)人員請注意:HOOPS Exchange使用動態(tài)加載。如果您在Linux或macOS上使用HOOPS Exchange,請確保您的編譯器配置了HAVE_DLFCN_H預(yù)處理器標(biāo)志,并使用鏈接器選項(xiàng)鏈接到DLFCN -ldl。
加載庫
要加載庫,請使用庫文件夾的路徑調(diào)用函數(shù)A3DSDKLoadLibrary。例如:
A3DBool loaded = A3DSDKLoadLibraryA(PATH_TO_A3DLIBS_DIR); if (loaded) { // HOOPS Exchange Loaded}
提供許可證
加載庫后,第一個(gè)調(diào)用的函數(shù)是A3DLicPutUnifiedLicense().此函數(shù)提供庫運(yùn)行所需的許可證密鑰:
A3DStatus result = A3DLicPutUnifiedLicense(HOOPS_LICENSE); if (result == A3D_SUCCESS) { // License provided}
如果在沒有有效許可證的情況下進(jìn)行任何API調(diào)用,則會返回A3D_INVALID_LICENSE。
初始化庫
HOOPS Exchange的初始化是執(zhí)行內(nèi)部初始化的庫端操作。A3DDllInitialize()使用主要版本號和次要版本號進(jìn)行調(diào)用。使用A3D_DLL_MAJORVERSION和A3D_DLL_MINORVERSION指定與頭文件相同的版本。例如:
A3DStatus result = A3DDllInitialize(A3D_DLL_MAJORVERSION, A3D_DLL_MINORVERSION); if (result == A3D_SUCCESS) {// HOOPS Exchange initialized}
初始化是一項(xiàng)一次性操作。如果多個(gè)程序加載相同的HOOPS Exchange二進(jìn)制文件,則初始化是共享的。該函數(shù)A3DDllIsInitialized()檢查庫是否已經(jīng)初始化。
終止庫
當(dāng)您的應(yīng)用程序完成后,請調(diào)用A3DDllTerminate()以處置任何使用的資源。每個(gè)應(yīng)用程序應(yīng)該調(diào)用一次,并且應(yīng)該與對 的調(diào)用配對A3DDllInitialize()。
卸載庫
要卸載庫,請使用A3DSDKUnloadLibrary().這會將所有函數(shù)指針重置為0并卸載庫文件。
A3DSDKUnloadLibrary()
代碼示例
下面是一個(gè)用C編寫的最小工作示例,演示了如何初始化HOOPS Exchange:
#define INITIALIZE_A3D_API #includeint main(int argc, char* argv[]) { // Load the library A3DBool loaded = A3DSDKLoadLibraryA(PATH_TO_A3DLIBS_DIR); assert(loaded); // Initialize and terminate if not already done A3DBool must_initialize = !A3DDllIsInitialized(); if (must_initialize) { A3DStatus result = A3DLicPutUnifiedLicense(HOOPS_LICENSE); assert(result == A3D_SUCCESS); result = A3DDllInitialize(A3D_DLL_MAJORVERSION, A3D_DLL_MINORVERSION); assert(result == A3D_SUCCESS); } // HOOPS Exchange ready to use! if (must_initialize) { A3DDllTerminate(); } // Unload the library A3DSDKUnloadLibrary() return EXIT_SUCCESS; }
包含INITIALIZE_A3D_API宏以提供必要的功能。請記住僅將其包含在一個(gè)源文件中,以避免多重定義錯誤。
特別規(guī)則
對于iOS版本,HOOPS Exchange提供HOOPS Parasolid Bridge作為擴(kuò)展庫。它允許HOOPS Exchange和Parasolid之間的轉(zhuǎn)換。在iOS上將HOOPS Exchange與Parasolid Bridge一起使用時(shí),定義A3DAPI_NO_IOS_HEPB_STUB宏以避免鏈接器錯誤問題。
#define A3DAPI_NO_IOS_HEPB_STUB #include// HOOPS Exchange Initialization
A3DSDKLoader.h頭文件提供函數(shù)并定義函數(shù)指針。確保僅將其包含在一個(gè)源文件中以避免錯誤。
HOOPS ExchangeLoader類
對于C++應(yīng)用程序,您可以使用該類HOOPSExchangeLoader來簡化HOOPS Exchange的初始化和處置。該類確保HOOPS Exchange在其生命周期內(nèi)進(jìn)行初始化,并在實(shí)例超出范圍時(shí)自動釋放。
慧都科技是Tech Soft 3D-HOOPS在中國區(qū)的唯一增值服務(wù)商,負(fù)責(zé)與試用,咨詢,銷售,技術(shù)支持,售后,旨在為企業(yè)提供一站式的3D開發(fā)解決方案。如果您的企業(yè)目前也有、的需求,歡迎咨詢在線客服申請3D 輕量化引擎的60天免費(fèi)試用。
↓↓掃碼添加客服微信,及時(shí)獲取“HOOPS技術(shù)”支持↓↓
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn