OpenHarmony开发者论坛

标题: OpenHarmony 导入so库后调用接口失败 [打印本页]

作者: 18025342273    时间: 2024-3-11 11:02
标题: OpenHarmony 导入so库后调用接口失败
[md]1,先新建native c++工程

![image.png](https://forums-obs.openharmony.c ... zsutxk32kvyvovz.png "image.png")

编译后会有libentry.so

2,再新建一个OpenHarmony工程,把第一步的libentry.so拷贝到libs目录下,结构图如下
![image.png](https://forums-obs.openharmony.c ... phu0pmbhanfhpyr.png "image.png")

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

![image.png](https://forums-obs.openharmony.c ... 92ye4h4jf114u9h.png "image.png")

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

![image.png](https://forums-obs.openharmony.c ... x3r2xzjdjrjknxz.png "image.png")
[/md]
作者: 深开鸿_王石    时间: 2024-3-11 18:09
不能这么copy,会少d.ts文件,你看那个nativec++工程里有那个文件的,所以才说缺少声明
作者: SEA-365    时间: 2024-3-20 17:36
回复 深开鸿_王石: 请问应该怎么使用呢
作者: SEA-365    时间: 2024-3-20 17:37
您好,目前是如何导入so文件的呢,感谢!
作者: 18025342273    时间: 2024-3-21 18:09
回复 SEA-365: 1,导入libs
2,导入typse文件夹
3,打开src/oh-package.json5文件在dependencies里面加入如下代码
"libxx.so": "file:./src/main/cpp/types/libxx"

作者: rice_fried_egg    时间: 2024-3-25 16:21
错误很明显啊, 你在加载so的时候就已经报错了。testNapi是undefined,
你过滤一下日志NAPI,会有错误日志打印,libentry.so 应该还依赖的别的so文件。
作者: 深开鸿_王石    时间: 2024-3-27 14:40
回复 SEA-365: 这个在回复区讲就好复杂,正常逻辑就是;1,导入so就必须是nativec++工程,然后导入so,头文件,然后写dts和cpp程序;2,还有一种呢是把nativec++工程做har包,然后导入har包用,har包export ts接口;
作者: 深开鸿_王石    时间: 2024-3-28 09:09
回复 SEA-365: 两种导入法子:看我两个文章吧:https://forums.openharmony.cn/fo ... thread&tid=2464https://forums.openharmony.cn/fo ... thread&tid=2218,都是有样例的
作者: SEA-365    时间: 2024-7-11 15:37
回复 深开鸿_王石: 请问如何直接调用别人已经编译好的xxx.z.so(有尝试过把xxx.z.so放在开发板的/system/lib/module目录,然后oh里边import,但是好像不行)

作者: 深开鸿_王石    时间: 2024-7-17 16:48
回复 SEA-365: 不行,要直接放到ide里,然后cmake里加so就行,类似这个文章:https://forums.openharmony.cn/fo ... thread&tid=3135
作者: zhikai    时间: 2024-8-8 20:01
回复 深开鸿_王石: 但是之前OH的官方教程移植Seetaface2的时候就是编写系统层的so文件然后把接口声明文件直接加入SDK文件夹中直接import
作者: 深开鸿_王石    时间: 2024-8-10 15:41
回复 zhikai: 那是个传统方法,增加framework层的,然后要在sdk里加dts,这样改动大,用这种ndk方法改动小




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5