dlopen 調用其函數。
步驟概覽
- 在 開發環境 中創建 C/C++ 庫項目
- 使用 HarmonyOS NDK 交叉編譯爲
arm64-v8a架構 - 將編譯產物放入
entry/libs/arm64-v8a/ - 在 ArkTS 中通過
dlopen加載並調用
1. 創建外部庫項目
自行創建 C/C++ 庫項目。 源代碼library.cpp:
extern "C" 防止 C++ 編譯器對函數名進行改編(name mangling),確保 dlsym("hello") 能正確找到符號。如果不加,編譯後的符號名會被改成 _Z5hellov,導致 dlopen 無法識別。2. 交叉編譯爲 HarmonyOS
在 開發環境 中使用 HarmonyOS NDK 的交叉編譯器進行編譯:3. 放置編譯產物
將編譯生成的libhello.so 放入項目的以下目錄:
如果項目還支持
x86_64 模擬器,需要在 entry/libs/x86_64/ 下也放置對應架構的編譯產物。4. 配置 abiFilters
確保library/build-profile.json5 中 abiFilters 包含編譯產物對應的架構: