饭店网站模板百度网站搜索关键字
饭店网站模板,百度网站搜索关键字,关键词推广网站,个人网站建设总结背景
OpenHarmony中#xff0c;三方库的使用有两种方式#xff1a;
一、固件集成
三方库经由OpenHarmony构建框架编译出的动态库或静态库#xff0c;打包到rom中
二、应用集成
三方库经由IDE#xff08;通过IDE中的cmake#xff09;编译出的动态库或静态库#xff0…背景
OpenHarmony中三方库的使用有两种方式
一、固件集成
三方库经由OpenHarmony构建框架编译出的动态库或静态库打包到rom中
二、应用集成
三方库经由IDE通过IDE中的cmake编译出的动态库或静态库打包到hap包中
有时候我们想直接使用三方库省略编译构建这个过程直接将固件集成方式构建出来的二进制动态库在IDE上面使用。在使用过程中我们会发现有时候编译工程在工程链接三方库的阶段出现找不到符号导致编译失败的问题。
问题分析
问题现象
使用固件集成方式构建出来的动态库直接在IDE上编译链接时出现如下图现象 如图所示提示ld.lld: error: undefined symbol: print(std::__n1::basic_stringchar, std::__n1::char_traits, std::__n1::allocator )
分析动态库
由上面现象中提示链接时没有找到对应函数符号我们分析一下动态库的符号表查看是否存在该符号 通过查看动态库的符号表我们可以发现存在该函数符号但是参数中的变量命名空间有所区别IDE中是std::__n1而固件集成方式编译出来的动态库是std::__h从这里看出可能是基础库libc.so或libc.so有所差异
分析基础库差异
我们对比一下IDE的SDK和OpenHarmony的sdk中的基础库libc.so/libc.so
首先对比libc.so的符号表左IDE中的libc右OpenHarmony中的libc 从上图可以看出函数的命名空间被隔离开了并且部分函数不一致是新增的
对比libc.so的符号表左IDE中的libc右OpenHarmony中的libc 从上图可以看出部分函数有新增
总结
通过以上分析出来的现象和工具链相关的负责人沟通命名空间隔离是由工具链这边自己进行隔离的因为系统侧和ndk侧两边发布版本的节奏不一致版本不同如果强行统一会导致api不兼容数据结构差异等问题。所以固件集成方式构建的库和应用集成构建的库不可以混用。
为了能让大家更好的学习鸿蒙HarmonyOS NEXT开发技术这边特意整理了《鸿蒙开发学习手册》共计890页希望对大家有所帮助https://qr21.cn/FV7h05
《鸿蒙开发学习手册》
如何快速入门https://qr21.cn/FV7h05
基本概念构建第一个ArkTS应用…… 开发基础知识https://qr21.cn/FV7h05
应用基础知识配置文件应用数据管理应用安全管理应用隐私保护三方应用调用管控机制资源分类与访问学习ArkTS语言…… 基于ArkTS 开发https://qr21.cn/FV7h05
Ability开发UI开发公共事件与通知窗口管理媒体安全网络与链接电话服务数据管理后台任务(Background Task)管理设备管理设备使用信息统计DFX国际化开发折叠屏系列…… 鸿蒙开发面试真题含参考答案https://qr18.cn/F781PH 鸿蒙开发面试大盘集篇共计319页https://qr18.cn/F781PH
1.项目开发必备面试题 2.性能优化方向 3.架构方向 4.鸿蒙开发系统底层方向 5.鸿蒙音视频开发方向 6.鸿蒙车载开发方向 7.鸿蒙南向开发方向
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88558.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!