相关问题
工程目录entry/libs目录下的so库,如何在native层使用
759浏览 • 1回复 待解决
ArkTS侧与Native侧分别如何动态加载SO库
3185浏览 • 1回复 待解决
ArkTS和Native如何动态加载、卸载so
2536浏览 • 1回复 待解决
如何在native层获取屏幕亮度
2238浏览 • 1回复 待解决
如何在ArkTS中动态加载so
1186浏览 • 1回复 待解决
在Native侧如何集成三方SO库
2926浏览 • 1回复 待解决
如何在HarmonyOS app使用so库
443浏览 • 1回复 待解决
Native工程中如何使用其他三方so库
3057浏览 • 1回复 待解决
ArkTS中如何使用编译出来的Native so库
819浏览 • 1回复 待解决
c编译的so库,导出成native的har静态库
738浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在TaskPool子线程中预加载So库并调用其函数?
329浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在TaskPool子线程中预加载.so库并通过句柄调用函数?
804浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在Native层实现日志的回调和过滤?
331浏览 • 1回复 待解决
HarmonyOS 如何在so库中验证App包名和签名,从而保证so库调用的合法性
450浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在TaskPool子线程中使用dlopen预加载so库并通过句柄调用库函数?
598浏览 • 0回复 待解决
HarmonyOS native C++ 层传递buffer 到ArkTS 层
759浏览 • 1回复 待解决
Native so 编译 opencv,报找不到 libunwind.so
1554浏览 • 1回复 待解决
HarmonyOS native层js代码调用
529浏览 • 1回复 待解决
native项目中,在CMakeLists.txt中加入三方so库接口后调用native方法失败
2650浏览 • 1回复 待解决
ArkTS项目如何调用已有SO库?
1466浏览 • 1回复 待解决
在native层创建socket异常
969浏览 • 1回复 待解决
HarmonyOS native层文件读写权限
550浏览 • 1回复 待解决
项目c++代码依赖多种so库,如何在编译打包的时候在hap包中仅编译指定的so库
1668浏览 • 1回复 待解决
如何通过ErrorManager捕获native层的崩溃信息
2252浏览 • 1回复 待解决
HarmonyOS 如何适配自己的so库?
1134浏览 • 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侧代码实现