如何在一个模块中使用另一个模块中编译出来的so

如何在a module的Native侧集成b module编译出来的so,a module可能会dependency b module。

HarmonyOS
2024-06-11 19:59:28
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
数掉几只鱼

1. 纯CPP部分单独用ndk编译成.so或.a并放在har或hsp中。

2. 依赖上述的har或hsp后,直接已链接+头文件的方式使用,在链接的时候,直接写库文件的名字即可。这样,纯cpp的so实现了多模块共享,需要通过napi使用的也只需要单独写napi代码即可,此时napi封装后的能力也可以通过模块依赖的方式被其他模块使用。

操作方式:

1. 在har/hsp模块的build-profile.json5中buildOption/nativeLib/headerPath指定接口文件目录:buildOption: { nativeLib: { headerPath: "src/main/cpp/include" } }。

2. 调用方依赖har/hsp包。

// oh-package.json 
dependencies: { curl: "1.0.0" }

3. 调用方配置cmake链接so,格式为packageName::soName,target_link_libraries(entry PUBLIC curl::curl)。

分享
微博
QQ
微信
回复
2024-06-12 16:23:34
相关问题
entry如何拉起另一个ModuleAbility
4035浏览 • 1回复 待解决
HAR能读到另一个HAR里rawfile文件吗
1689浏览 • 1回复 待解决
ArkTS如何使用编译出来Native so
314浏览 • 1回复 待解决