HarmonyOS 鸿蒙Next 用dlopen打开.so文件后找到方法调用报错
HarmonyOS 鸿蒙Next 用dlopen打开.so文件后找到方法调用报错
FUNC_SUB sub_func = (FUNC_SUB)dlsym(handle, “MyAdd”); int res = sub_func(a, b);
哪个好心人帮我看看谢谢
具体报错是啥,有日志吗?
更多关于HarmonyOS 鸿蒙Next 用dlopen打开.so文件后找到方法调用报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
Process name: com.sag.huawei
Process life time: 38s
Reason: Signal: SIGSEGV(SEGV_MAPERR)@0x000000000000007d probably caused by NULL pointer dereference
Fault thread info:
Tid: 8071, Name: com.sag.huawei
#00 pc 00000000000a6154 /data/storage/el1/bundle/libs/arm64/libplus.so
#01 pc 00000000000a611c /data/storage/el1/bundle/libs/arm64/libplus.so
#02 pc 00000000000ad328 /data/storage/el1/bundle/libs/arm64/libplus.so(crosscall2+56)
#03 pc 0000000000001f28 /data/storage/el1/bundle/libs/arm64/libentry.so(getB+100)(e28b3944f9a79cd22d8008ccee82fef59be2b947)
#04 pc 0000000000001e44 /data/storage/el1/bundle/libs/arm64/libentry.so(e28b3944f9a79cd22d8008ccee82fef59be2b947)
#05 pc 0000000000038174 /system/lib64/platformsdk/libace_napi.z.so(panda::JSValueRef ArkNativeFunctionCallBack<true>(panda::JsiRuntimeCallInfo*)+220)(15b97778178f8c4d8304742b405e00c5)
#06 pc 0000000000332130 /system/lib64/module/arkcompiler/stub.an(RTStub_PushCallArgsAndDispatchNative+40)
#07 at anonymous (entry/src/main/ets/pages/Index.ets:133:75)
#08 pc 000000000033dfb0 /system/lib64/platformsdk/libark_jsruntime.so(623aaba60ba66d828940c18f2d12c7e9)
#09 pc 000000000053bba0 /system/lib64/platformsdk/libark_jsruntime.so(panda::FunctionRef::Call(panda::ecmascript::EcmaVM const*, panda::Local<panda::JSValueRef>, panda::Local<panda::JSValueRef> const*, int)+800)(623aaba60ba66d828940c18f2d12c7e9)
#10 pc 000000000231ed40 /system/lib64/platformsdk/libace_compatible.z.so(a31dc57902f3de9ca6a171373f3765ac)
#11 pc 0000000001ef7234 /system/lib64/platformsdk/libace_compatible.z.so(a31dc57902f3de9ca6a171373f3765ac)
#12 pc 0000000001eeb61c /system/lib64/platformsdk/libace_compatible.z.so(a31dc57902f3de9ca6a171373f3765ac)
#13 pc 0000000002114bc4 /system/lib64/platformsdk/libace_compatible.z.so(a31dc57902f3de9ca6a171373f3765ac)
#14 pc 00000000018203e0 /system/lib64/platformsdk/libace_compatible.z.so(a31dc57902f3de9ca6a171373f3765ac)
#15 pc 000000000185bc30 /system/lib64/platformsdk/libace_compatible.z.so(a31dc57902f3de9ca6a171373f3765ac)
这是报错信息:
![](image_url)
在HarmonyOS(鸿蒙)系统中,使用dlopen
打开.so
文件后调用方法报错,可能涉及几个核心问题:
-
符号解析失败:确保
.so
文件中包含的方法符号与调用时使用的符号完全匹配,包括命名、参数类型及数量等。此外,检查.so
文件的编译选项,确保没有遗漏必要的符号导出。 -
依赖问题:
.so
文件可能依赖其他库文件,这些依赖库必须在加载主.so
文件前被正确加载。使用ldd
命令(或在鸿蒙系统中等效的工具)检查.so
文件的依赖关系,并确保所有依赖项都可用。 -
动态链接器配置:检查系统动态链接器的配置,确保没有阻止
.so
文件的加载或方法调用。这包括检查环境变量如LD_LIBRARY_PATH
(或在鸿蒙系统中的等效设置)。 -
权限问题:确保应用程序有权限访问和执行
.so
文件。在鸿蒙系统中,文件访问权限可能受到应用沙箱机制的限制。 -
版本兼容性问题:如果
.so
文件是为不同版本的HarmonyOS编译的,可能存在不兼容的情况。确认.so
文件与目标HarmonyOS版本的兼容性。
如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html,