HarmonyOS 鸿蒙Next OpenHarmony 3.1 Native 应用开发,引用通过交叉编译生成的第三方 so 报错
HarmonyOS 鸿蒙Next OpenHarmony 3.1 Native 应用开发,引用通过交叉编译生成的第三方 so 报错
通过交叉编译生成的 so 文件,在开发板上写了一个程序可以引用,并且能正常运行,但是在 DevEco Studio 里引用,报错:
ld.lld: error: .../testnative/entry/src/main/cpp/../../../libs/armeabi-v7a/libwutils.so is incompatible with aarch64linux
请问是配置的问题吗,还是其他什么原因
CMakelists.txt :
# the minimum version of CMake.
cmake_minimum_required(VERSION 3.4.1)
project(XComponent)
set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${NATIVERENDER_ROOT_PATH}
${NATIVERENDER_ROOT_PATH}/include)
set(my_lib_path ${CMAKE_SOURCE_DIR}/../../../libs)
add_library(wutils SHARED IMPORTED)
set_target_properties(wutils PROPERTIES IMPORTED_LOCATION ${my_lib_path}/armeabi-v7a/libwutils.so)
add_library(entry SHARED hello.cpp)
target_link_libraries(entry PUBLIC libace_napi.z.so libc++.a wutils)
更多关于HarmonyOS 鸿蒙Next OpenHarmony 3.1 Native 应用开发,引用通过交叉编译生成的第三方 so 报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好,开发板是运行环境,程序可以引用和运行,说明so文件已烧录至系统中,但是Deveco是开发环境,需要依赖sdk,编译生成的so文件需在sdk中存在才能进行引用,故需重新编译sdk,并替换掉Deveco的原生sdk
编译sdk:./build.sh --product-name ohos-sdk
编译输出目录:out/sdk/packages/ohos-sdk/windows
编译完成后替换开发工具的内置sdk,需注意目录结构和命名
更多关于HarmonyOS 鸿蒙Next OpenHarmony 3.1 Native 应用开发,引用通过交叉编译生成的第三方 so 报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对帖子标题“HarmonyOS 鸿蒙Next OpenHarmony 3.1 Native 应用开发,引用通过交叉编译生成的第三方 so 报错”的问题,以下是一些可能的解决方案:
首先,确认第三方so文件是否与OpenHarmony 3.1系统的架构(如arm64或aarch64)相匹配。如果架构不匹配,将会导致加载so文件时出错。
其次,检查交叉编译工具链是否正确配置,并确保使用的编译器版本与OpenHarmony 3.1兼容。编译工具链的不一致可能导致生成的so文件与系统不兼容。
此外,还需验证so文件所依赖的其他库是否已在OpenHarmony系统中正确安装。如果缺少依赖库,系统在加载so文件时会报错。
同时,检查应用程序的CMakeLists.txt或Android.mk配置文件,确保正确指定了so文件的路径和名称。配置错误可能导致链接器无法找到so文件。
最后,查看系统的日志输出,找到具体的报错信息。根据报错信息,定位问题所在,可能是so文件中的代码与OpenHarmony系统的API不兼容,或者so文件本身存在损坏。
如果以上方法均无法解决问题,可能是更复杂的兼容性问题或系统bug。此时,建议联系OpenHarmony的官方支持渠道或社区寻求帮助。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,