HarmonyOS ArkTS调用so库?

1,通过devEco studio生成so库。

2,将so复制到工程libs目录下。

3,在entry目录下oh-package.json5配置信息。

4,在src/main/cpp/types/libentry下建并且配置index.d.ts 和oh-package.json5。

5,在pages文件使用import testNapi from 'libentry.so'。

6,代码使用testNapi.add(2, 3)。

7,报错 :

[ArkRuntime Log] TypeError: Cannot read property add of undefined
06-25 00:20:44.989 11804-7448 C03f00/ArkCompiler
E [ArkRuntime Log] at anonymous (entry/src/main/ets/pages/CategoryPage.ets:146:42)
阅读 760
1 个回答

1、使用HarmonyOS工具链编译 C++ 的源码,打包成HarmonyOS可以识别的so库,可以参考https://wentao-du.gitee.io/the-north-remembers/\#/toolchains/third-party-libraries的动态库编译章节。

2、引入三方库,可以参考 https://gitee.com/openharmony-sig/tpc\_c\_cplusplus/blob/master/lycium/doc/app\_calls\_third\_lib.md

引入三方库的几个要点:

2.1 entry/libs创建对应的目录,放入编译的三方库。

2.2 src/main/cpp 按照指定可以创建 thirdparty/三方库名称/不同平台的目录,lib 目录放入so库,include 放入 .h文件,注意thirdparty文件名称是固定的,不要改名字。

2.3 CMakeLists.txt文件中引入thirdparty 的 so 库路径和include文件路径。

3、添加 node-api接口,实现ArkTs和C++的相互调用,可参考:https://gitee.com/openharmony-sig/tpc\_c\_cplusplus/blob/master/docs/thirdparty\_knowledge.md\#\#\#%E5%8C%97%E5%90%91%E5%BA%94%E7%94%A8%E4%B8%AD%E4%BD%BF%E7%94%A8

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进