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