HarmonyOS 鸿蒙Next:native c++文件中是否能够通过dlopen的方式加载so

发布于 1周前 作者 itying888 最后一次编辑是 5天前 来自 鸿蒙OS

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

6 回复
有结果吗

更多关于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文件时,请确保以下几点:

  1. .so文件的编译与鸿蒙系统的目标架构兼容。
  2. 应用的权限设置允许访问和执行该.so文件。
  3. 鸿蒙系统API对于动态链接库的支持与预期相符。

如果问题依旧没法解决请加我微信,我的微信是itying888。

更多关于HarmonyOS 鸿蒙Next:native c++文件中是否能够通过dlopen的方式加载so的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


回到顶部