HarmonyOS 鸿蒙Next:native c++文件中是否能够通过dlopen的方式加载so
HarmonyOS 鸿蒙Next:native c++文件中是否能够通过dlopen的方式加载so
背景:
我在安卓开发的时候用过一个so库,当时是通过JNI方式使用的。当前我的工程是使用arkts去开发我的APP,我想复用这个so库,不去重新编译。
过程
我想在native c++文件中,尝试使用dlopen去加载这个so,但是找不到。dlerror报错打印出来,“Symbol not found: NAPI_default/entry_GetABCCode, version: null”。
问题
我可以使用源码在native工程中重新编一个so,但我现在就想搞清楚一件事,鸿蒙到底支持加载三方so不,文档也没个清楚的,能跑的demo也没一个。是不是加载到项目中的so都得是ndk编译的?官方我所有文档都看了,希望能有个确定的解释,相关开发人员能提供个一个能跑的demo,讲不清楚,怎么让其他开发者使用呢?
更多关于HarmonyOS 鸿蒙Next:native c++文件中是否能够通过dlopen的方式加载so的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS 鸿蒙Next:native c++文件中是否能够通过dlopen的方式加载so的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
能通过dlopen的方式打开so,但是这个so需要使用鸿蒙的编译工具链去编译。
我简单的C代码试了一下,鸿蒙编译出来的so和Linux gcc编译出来的so文件可以用dlopen打开,用dlsym调用函数,但是Android NDK编译的so就不行,有点坑
我用mac 打包的so 用dlopen打开不行,怎么编译才能打开外部编译的so文件,能给一个文档和操作流程吗?
在HarmonyOS(鸿蒙)系统中,对于使用native C++进行开发时,通过dlopen
方式加载.so
(共享库)文件通常是支持的,因为这种方式在Linux和类Unix系统中广泛存在,并且HarmonyOS在底层设计上与这些系统有相似之处。然而,具体的实现和支持程度可能取决于鸿蒙系统的具体版本和API限制。
在尝试使用dlopen
加载.so
文件时,请确保以下几点:
.so
文件的编译与鸿蒙系统的目标架构兼容。- 应用的权限设置允许访问和执行该
.so
文件。 - 鸿蒙系统API对于动态链接库的支持与预期相符。
如果问题依旧没法解决请加我微信,我的微信是itying888。
更多关于HarmonyOS 鸿蒙Next:native c++文件中是否能够通过dlopen的方式加载so的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html