OpenHarmony 导入so库后调用接口失败 精华

18025342273 显示全部楼层 发表于 2024-3-11 11:02:52

1,先新建native c++工程

image.png

编译后会有libentry.so

2,再新建一个OpenHarmony工程,把第一步的libentry.so拷贝到libs目录下,结构图如下 image.png

3,在index.ets里面做了如下调用

image.png

4,编译运行后,报错如下

image.png

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论11

深开鸿_王石

沙发 发表于 2024-3-11 18:09:04
不能这么copy,会少d.ts文件,你看那个nativec++工程里有那个文件的,所以才说缺少声明

SEA-365

发表于 2024-3-20 17:36  IP属地: 河南省郑州市

回复 深开鸿_王石: 请问应该怎么使用呢

深开鸿_王石

发表于 2024-3-27 14:40  IP属地: 上海市

回复 SEA-365: 这个在回复区讲就好复杂,正常逻辑就是;1,导入so就必须是nativec++工程,然后导入so,头文件,然后写dts和cpp程序;2,还有一种呢是把nativec++工程做har包,然后导入har包用,har包export ts接口;

【2 条回复】

SEA-365

板凳 发表于 2024-3-20 17:37:52
您好,目前是如何导入so文件的呢,感谢!

18025342273

发表于 2024-3-21 18:09  IP属地: - 中国广东省广州市 中国电信IDC

回复 SEA-365: 1,导入libs
2,导入typse文件夹
3,打开src/oh-package.json5文件在dependencies里面加入如下代码
"libxx.so": "file:./src/main/cpp/types/libxx"

深开鸿_王石

发表于 2024-3-28 09:09  IP属地: - 中国江苏省无锡市 中国电信IDC

回复 SEA-365: 两种导入法子:看我两个文章吧:https://forums.openharmony.cn/fo ... thread&tid=2464https://forums.openharmony.cn/fo ... thread&tid=2218,都是有样例的

SEA-365

发表于 2024-7-11 15:37  IP属地: 湖南省

回复 深开鸿_王石: 请问如何直接调用别人已经编译好的xxx.z.so(有尝试过把xxx.z.so放在开发板的/system/lib/module目录,然后oh里边import,但是好像不行)

深开鸿_王石

发表于 2024-7-17 16:48  IP属地: 江苏省

回复 SEA-365: 不行,要直接放到ide里,然后cmake里加so就行,类似这个文章:https://forums.openharmony.cn/fo ... thread&tid=3135

zhikai

发表于 2024-8-8 20:01  IP属地: 江苏省扬州市

回复 深开鸿_王石: 但是之前OH的官方教程移植Seetaface2的时候就是编写系统层的so文件然后把接口声明文件直接加入SDK文件夹中直接import

深开鸿_王石

发表于 2024-8-10 15:41  IP属地: 江苏省

回复 zhikai: 那是个传统方法,增加framework层的,然后要在sdk里加dts,这样改动大,用这种ndk方法改动小

【6 条回复】

奔跑的大鸡腿

地板 发表于 2024-3-25 16:21:30
错误很明显啊, 你在加载so的时候就已经报错了。testNapi是undefined,
你过滤一下日志NAPI,会有错误日志打印,libentry.so 应该还依赖的别的so文件。

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部