HarmonyOS 鸿蒙Next:native开发-将c++代码编译成so库,这个库再供工程里面另外c++代码调用,求教程,如果有示例更好。
HarmonyOS 鸿蒙Next:native开发-将c++代码编译成so库,这个库再供工程里面另外c++代码调用,求教程,如果有示例更好。
将c++代码编译成so库,这个库再供工程里面另外c++代码调用,求教程,如果有示例更好。工作需求,需要将开源iconv库融入进去使用,怎么编译以及使用。
2 回复
楼主您好,具体引用so库代码里面的方法如下:
使用当前工程编译的so库,可直接在ets文件中引用,最小demo可新建一个native C++模板的工程
引用外部.so库分为两类
一、so为鸿蒙编译器编译,可在libs下创建一个架构文件夹,文件架构为:libs/架构名(arm64-v8a,armeabi-v7a,x86_64)/xxx.so
然后在ets侧进行引用,引用方式为:import {方法名} from ‘xxxx.so’
二、so为其他编译器编译,需要走适配流程,流程如下:
第一步,配置交叉编译环境,
https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/Buildtools/README.md
第二步,移植三方库
https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md
第三步,集成进项目
https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/app_calls_third_lib.md
使用当前工程编译的so库,可直接在ets文件中引用,最小demo可新建一个native C++模板的工程
引用外部.so库分为两类
一、so为鸿蒙编译器编译,可在libs下创建一个架构文件夹,文件架构为:libs/架构名(arm64-v8a,armeabi-v7a,x86_64)/xxx.so
然后在ets侧进行引用,引用方式为:import {方法名} from ‘xxxx.so’
二、so为其他编译器编译,需要走适配流程,流程如下:
第一步,配置交叉编译环境,
https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/Buildtools/README.md
第二步,移植三方库
https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md
第三步,集成进项目
https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/app_calls_third_lib.md
在HarmonyOS中,将C++代码编译成so库并供工程内其他C++代码调用,可按以下步骤操作:
- 获取SDK与环境配置:首先确保安装了DevEco Studio和OpenHarmony SDK,并配置好环境变量。
- 编写CMakeLists.txt:在C++代码根目录下创建CMakeLists.txt文件,配置编译器选项、链接库等。
- 编写代码:确保C++代码是可编译的,并根据需要添加必要的头文件和库文件。
- 编译so库:使用CMake和Ninja等工具在命令行中编译代码,生成.so文件。
- 集成到工程中:将编译好的.so文件放置在工程中的合适位置,并在需要调用该库的C++文件中使用
dlopen
等函数加载so库,并获取函数指针进行调用。
如果问题依旧没法解决请加我微信,我的微信是itying888。