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/ 下也放置对应架构的编译产物。本示例仅编译 arm64-v8a,因此 abiFilters 也仅包含此架构。4. 配置 abiFilters
确保library/build-profile.json5 中 abiFilters 包含编译产物对应的架构: