HarmonyOS 鸿蒙Next 调用外部so出错
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
该问题最终如何处理呢,遇到同样的问题。DevEco 4.1 release | SDK 4 | API 10.
- 创建native C++项目,指定生成armeabi-v7a.
- 再C++代码中调用Linux平台下生成的armeabi-v7a的so。此so在安装上可以正常调用
- 在native C++工程中target_link_libraries能够正常链接到此库,引入头文件后,也能正常提示相关接口信息。
- 在真机调试时,点击按钮,在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出错”的问题,以下是一些可能的解决方案:
-
检查SO文件兼容性: 确保你的SO文件是为HarmonyOS平台编译的,而不是为其他平台(如Android)编译的。HarmonyOS虽然与Android有相似之处,但在底层实现和ABI(应用程序二进制接口)上存在差异。
-
检查加载路径: 确保SO文件的路径正确无误,且应用有权限访问该路径。在HarmonyOS中,文件访问权限可能更加严格。
-
使用正确的加载方法: 在HarmonyOS中,加载SO文件通常使用
System.loadLibrary
或System.load
方法。确保你使用的是正确的方法,并且传递的参数是正确的库名或完整路径。 -
检查依赖库: 如果SO文件依赖于其他库,确保这些依赖库也已正确加载。有时,一个SO文件可能依赖于多个其他库,这些库必须按正确的顺序加载。
-
查看错误日志: 仔细查看应用崩溃时的错误日志,这可能会提供关于为什么SO文件无法加载或执行的具体信息。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。在这里,你可以获得更专业的帮助和支持。