HarmonyOS NDK Demo工程引入libcurl.so三方库后,点击helloworld奔溃

使用DevEco studio创建NDK demo工程,使用https://gitee.com/openharmony-sig/tpc_c_cplusplus/tree/master提供编译脚本编译三方库libcurl.so,当NDK demo工程引入libcurl.so三方库后,点击helloworld奔溃。(作为对比,引入libsum.so工程运行正常,libsum只有一个函数,使用cmake编译的so)

HarmonyOS
2024-09-13 09:36:09
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

对于通用加载崩溃,都是没有打包到hap里面去导致的,或者是打包进去了,依赖库没打包进去,基本都是这种情况关于动态库的引入:thirdparty/库名/架构名/lib目录下是编译时需要的动态库,cmakelist链接动态库时是指这个路径libs/架构名 下的带主版本号的会打进hap包中,是运行时需要的动态库。

应用在引用动态库的时候是通过soname来查找的,所以我们需要将名字为soname的库文件拷贝到entry/libs/${OHOS_ARCH}/目录下soname查看方法:

$OHOS_SDK/native/llvm/bin/llvm-readelf -d libxxx.so

大多数情况下soname就是带主版本号的动态库。

具体步骤可以参考:https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/app_calls_third_lib.mdlibs/架构名 下放入所有的.so.版本号 文件thirdparty\xxx(一般为库名)\arm64-v8a(架构名)\lib下放入所有的.so文件

curl库网络请求报错:

[nodict][HookSocket-(netsys_sock_client.cpp:46)]musl create socket failed, errno 1

cpphttplib库网络请求报错:

[nodict][HookSocket-(netsys_sock_client.cpp:46)]musl create socket failed, errno 1

没有添加网络权限导致,在module.json5中加上配置

"requestPermissions": [  
{ " 
name": "ohos.permission.INTERNET" 
 }  
]
分享
微博
QQ
微信
回复
2024-09-13 18:05:29
相关问题
Native工程中如何使用其他三方so
2258浏览 • 1回复 待解决
有谁知道如何引入三方so
2439浏览 • 1回复 待解决
HarmonyOS 如何检测引入三方的权限
560浏览 • 1回复 待解决
如何编译鸿蒙使用的libcurl.so
921浏览 • 1回复 待解决
如何引入自己的“第三方
543浏览 • 1回复 待解决
工程中的三方怎么clear ?
154浏览 • 1回复 待解决
在Native侧如何集成三方SO
2192浏览 • 1回复 待解决
解析相关问题咨询
132浏览 • 1回复 待解决
HarmonyOS 三方so如何访问rawfile文件
307浏览 • 1回复 待解决
HarmonyOS 三方so如何访问rawfile文件?
103浏览 • 0回复 待解决
三方相机预览demo开发
861浏览 • 1回复 待解决