积分1491 / 贡献20

提问16答案被采纳59文章37

在nativec++应用里dlopen一个so的问题

深开鸿_王石 显示全部楼层 发表于 2024-1-3 18:45:03

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吗?

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

精彩评论11

追梦人

沙发 发表于 2024-6-18 17:17:18
大佬,问题解决了吗

深开鸿_王石

发表于 2024-6-19 17:55  IP属地: 江苏省无锡市

回复 追梦人: 不能這麽乾,哈哈

oh-assistant

发表于 2024-6-20 11:21  IP属地: - 中国 中国电信股份有限公司云计算分公司

回复 深开鸿_王石: OpenHarmony上dlopen不能用吗,请教一下

xq_qyh

发表于 2024-6-20 11:47  IP属地: - 中国广东省广州市 中国电信IDC

回复 深开鸿_王石: 那应该怎么在native中调用其他的so呢

深开鸿_王石

发表于 2024-6-21 14:22  IP属地: - 中国上海市 中国电信IDC

回复 xq_qyh: 需要再napi层对具体so进行编译,在deveco里用cmake进行编译

koubo

发表于 2024-6-26 11:04  IP属地: 山东省济南市

回复 深开鸿_王石: 想问下大佬,应用程序能通过dlopen打开so库,但是获取到so库里的内容为null,可能是什么原因,是需要应用程序申请哪些特殊权限吗

深开鸿_王石

发表于 2024-6-26 15:07  IP属地: 江苏省

回复 koubo: nativec++的so是要在native方式編譯的

koubo

发表于 2024-6-26 15:30  IP属地: 上海市

回复 深开鸿_王石: 那如果是系统源码中某个服务编译出来的so库,应用程序无法用dlopen打开了吗,这种情况该如何调用

深开鸿_王石

发表于 2024-6-27 09:53  IP属地: 江苏省

回复 koubo: 学so的做法就两种:1,写个sa,然后通过proxy和sub调用;2,自己写个服务,udp(有些就这么玩,哈哈,但是野路子)

深开鸿_王石

发表于 2024-6-27 10:18  IP属地: 江苏省

回复 koubo: 还有个官方可行的引用so的文章,你看看,对原生cmake或者make的工程也不费事,
https://forums.openharmony.cn/fo ... tid=3135&extra=

koubo

发表于 2024-7-1 16:16  IP属地: 湖南省

回复 深开鸿_王石: 好的,谢谢大佬

【10 条回复】

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

返回顶部