OpenHarmony开发者论坛

标题: 在nativec++应用里dlopen一个so的问题 [打印本页]

作者: 深开鸿_王石    时间: 2024-1-3 18:45
标题: 在nativec++应用里dlopen一个so的问题
[md]Symbol not found: NAPI_default/entry_GetABCCode, version: null

1,创建一个nativcec++应用

2,在c++代码里增加dlopen开so

```
void* handle = dlopen("/data/local/tmp/libsoexample.so", RTLD_LAZY);
    if (!handle) {
        char* dlerr = dlerror();
        printf("%s\n", dlerror());
```

3,打印输出错误信息:

Symbol not found: NAPI_default/entry_GetABCCode


难道napi里调用dlopen也需要对应的so是napi方式编译出来的so吗?
[/md]
作者: 追梦人    时间: 2024-6-18 17:17
大佬,问题解决了吗

作者: 深开鸿_王石    时间: 2024-6-19 17:55
回复 追梦人: 不能這麽乾,哈哈
作者: oh-assistant    时间: 2024-6-20 11:21
回复 深开鸿_王石: OpenHarmony上dlopen不能用吗,请教一下
作者: xq_qyh    时间: 2024-6-20 11:47
回复 深开鸿_王石: 那应该怎么在native中调用其他的so呢
作者: 深开鸿_王石    时间: 2024-6-21 14:22
回复 xq_qyh: 需要再napi层对具体so进行编译,在deveco里用cmake进行编译
作者: koubo    时间: 2024-6-26 11:04
回复 深开鸿_王石: 想问下大佬,应用程序能通过dlopen打开so库,但是获取到so库里的内容为null,可能是什么原因,是需要应用程序申请哪些特殊权限吗
作者: 深开鸿_王石    时间: 2024-6-26 15:07
回复 koubo: nativec++的so是要在native方式編譯的
作者: koubo    时间: 2024-6-26 15:30
回复 深开鸿_王石: 那如果是系统源码中某个服务编译出来的so库,应用程序无法用dlopen打开了吗,这种情况该如何调用
作者: 深开鸿_王石    时间: 2024-6-27 09:53
回复 koubo: 学so的做法就两种:1,写个sa,然后通过proxy和sub调用;2,自己写个服务,udp(有些就这么玩,哈哈,但是野路子)
作者: 深开鸿_王石    时间: 2024-6-27 10:18
回复 koubo: 还有个官方可行的引用so的文章,你看看,对原生cmake或者make的工程也不费事,
https://forums.openharmony.cn/fo ... tid=3135&extra=
作者: koubo    时间: 2024-7-1 16:16
回复 深开鸿_王石: 好的,谢谢大佬




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