HarmonyOS 鸿蒙Next 调用外部so出错

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 调用外部so出错

请问一下 在deveco中,调用native c++ 然后这个c++调用了外部导入的so,这个外部的so应该怎么导入呢?

现在报错如下:

ld.lld: error: D:/workspace/DevEcoApplication/MyApplication11/entry/src/main/cpp/../../../libs/arm64-v8a/libadd.so is incompatible with aarch64linux

cmakelists.txt设置如下:

set(my_lib_path ${CMAKE_SOURCE_DIR}/../../../libs)
add_library(add SHARED IMPORTED)
set_target_properties(add PROPERTIES IMPORTED_LOCATION ${my_lib_path}/arm64-v8a/libadd.so)

add_library(hello SHARED hello.cpp)

target_link_libraries(hello PUBLIC libace_napi.z.so libc++.a add)

更多关于HarmonyOS 鸿蒙Next 调用外部so出错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

该问题最终如何处理呢,遇到同样的问题。DevEco 4.1 release | SDK 4 | API 10.

  1. 创建native C++项目,指定生成armeabi-v7a.
  2. 再C++代码中调用Linux平台下生成的armeabi-v7a的so。此so在安装上可以正常调用
  3. 在native C++工程中target_link_libraries能够正常链接到此库,引入头文件后,也能正常提示相关接口信息。
  4. 在真机调试时,点击按钮,在C++处打断点,但没有进入到断点,程序就直接崩掉

更多关于HarmonyOS 鸿蒙Next 调用外部so出错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


DevEco Studio是什么版本的呀,麻烦提供下!

DevEco Studio 3.1 Canary4 version: 3.0.0.862

如果想在C++中调用SO,需要怎么做?

工号发一下发完后,发完后我私聊你!

开发者您好,相关问题已经反馈给工作人员,稍后会再回复您,感谢您对华为开发者论坛的支持。

针对“HarmonyOS 鸿蒙Next 调用外部so出错”的问题,以下是一些可能的解决方案:

  1. 检查SO文件兼容性: 确保你的SO文件是为HarmonyOS平台编译的,而不是为其他平台(如Android)编译的。HarmonyOS虽然与Android有相似之处,但在底层实现和ABI(应用程序二进制接口)上存在差异。

  2. 检查加载路径: 确保SO文件的路径正确无误,且应用有权限访问该路径。在HarmonyOS中,文件访问权限可能更加严格。

  3. 使用正确的加载方法: 在HarmonyOS中,加载SO文件通常使用System.loadLibrarySystem.load方法。确保你使用的是正确的方法,并且传递的参数是正确的库名或完整路径。

  4. 检查依赖库: 如果SO文件依赖于其他库,确保这些依赖库也已正确加载。有时,一个SO文件可能依赖于多个其他库,这些库必须按正确的顺序加载。

  5. 查看错误日志: 仔细查看应用崩溃时的错误日志,这可能会提供关于为什么SO文件无法加载或执行的具体信息。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。在这里,你可以获得更专业的帮助和支持。

回到顶部