相关问题
ArkTS侧与Native侧分别如何动态加载SO库
2479浏览 • 1回复 待解决
ArkTS和Native如何动态加载、卸载so
1984浏览 • 1回复 待解决
如何在native层获取屏幕亮度
1855浏览 • 1回复 待解决
如何在ArkTS中动态加载so
538浏览 • 1回复 待解决
在Native侧如何集成三方SO库
2237浏览 • 1回复 待解决
ArkTS中如何使用编译出来的Native so库
450浏览 • 1回复 待解决
Native工程中如何使用其他三方so库
2286浏览 • 1回复 待解决
c编译的so库,导出成native的har静态库
186浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在TaskPool子线程中预加载So库并调用其函数?
100浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在TaskPool子线程中预加载.so库并通过句柄调用函数?
146浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在Native层实现日志的回调和过滤?
127浏览 • 1回复 待解决
HarmonyOS 如何在so库中验证App包名和签名,从而保证so库调用的合法性
47浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在TaskPool子线程中使用dlopen预加载so库并通过句柄调用库函数?
86浏览 • 0回复 待解决
Native so 编译 opencv,报找不到 libunwind.so
923浏览 • 1回复 待解决
HarmonyOS native C++ 层传递buffer 到ArkTS 层
35浏览 • 1回复 待解决
native项目中,在CMakeLists.txt中加入三方so库接口后调用native方法失败
2145浏览 • 1回复 待解决
HarmonyOS native层js代码调用
51浏览 • 1回复 待解决
在native层创建socket异常
461浏览 • 1回复 待解决
项目c++代码依赖多种so库,如何在编译打包的时候在hap包中仅编译指定的so库
1170浏览 • 1回复 待解决
如何通过ErrorManager捕获native层的崩溃信息
1777浏览 • 1回复 待解决
ArkTS项目如何调用已有SO库?
912浏览 • 1回复 待解决
native如何通过命令行编译成so?
2534浏览 • 1回复 待解决
HarmonyOS 如何适配自己的so库?
545浏览 • 1回复 待解决
DevEco Studio开发如何引入.so库
10800浏览 • 1回复 待解决
sdk 10升级sdk 11后,加载链接的so库崩溃
1457浏览 • 1回复 待解决
在Native层的C/C++代码环境,so库动态加载是使用dlopen()、dlsym()和dlclose()这三个函数实现的。它们的作用分别是:
一般使用C/C++实现so库动态加载,流程如下:
首先调用dlopen()函数,这个函数所需的参数,一个是so库的路径,一个是加载模式。一般使用的加载模式有两个:
显然对于动态加载,加载方只需知道当前被加载的so库里面自己需要用的函数和变量定义,所以这里选择的是后者。如果这个调用成功将返回一个so库的句柄;
在上一步得到so库句柄之后,这时就可以调用dlsym()函数,传入so库句柄和所需的函数或变量名称,返回相应的函数指针或变量指针;加载方这时就可以使用返回的指针调用被加载so库之中定义的函数和数据结构;
当so库的调用结束,调用dlclose()函数关闭卸载so库;
如果在打开关闭so库,或者获取so库里操作对象的指针出现错误的时候,可以调用dlerror()函数获取具体的错误原因。
Native侧代码实现