HarmonyOS鸿蒙Next中ndk项目里是否可以使用c文件,如何将.c文件代码编译到so包里

HarmonyOS鸿蒙Next中ndk项目里是否可以使用c文件,如何将.c文件代码编译到so包里 是这样的,原先安卓ndk开发这块,有许多.c文件写的c接口函数,android这边是.c jni层,打包的时候可以把所有.c文件一起打进so包里;

然后鸿蒙这边是.cpp c++的napi层,上层.ets 为js层,那么想请问,原先这块.c c接口是否可以继续使用,过程为js->.cpp函数-c文件接口,所以想请问一下,该如何把.c文件 和cpp文件一起打进libentry.so中呢;

目前照网上搜的解决方案,是c文件里面加上extern “C”{};但是还是报错,cpp中调用c文件中的c接口没有报错提示,但是编译打包,就还是会提示找不到这个函数,undefined symbol


更多关于HarmonyOS鸿蒙Next中ndk项目里是否可以使用c文件,如何将.c文件代码编译到so包里的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

更多关于HarmonyOS鸿蒙Next中ndk项目里是否可以使用c文件,如何将.c文件代码编译到so包里的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


改文件名为 .cpp 应该就好了,本来就兼容 C 语言的。

在HarmonyOS鸿蒙Next中,NDK项目可以使用C文件。要将.c文件编译到.so包中,首先需要在项目的CMakeLists.txt文件中配置C文件为源文件,并指定生成的目标库为共享库(SHARED)。

例如:

cmake_minimum_required(VERSION 3.4.1)

add_library(
    native-lib
    SHARED
    src/main/cpp/native-lib.c
)

target_link_libraries(native-lib log)

其中,src/main/cpp/native-lib.c是C文件的路径,native-lib是生成的.so库的名称。编译时,CMake会将该C文件编译为.so库,并放置在项目的build/intermediates/cmake目录下。

在HarmonyOS鸿蒙Next的NDK项目中,完全可以使用C文件。要将.c文件代码编译到.so包中,首先需要在CMakeLists.txt或Android.mk中正确配置源文件路径和编译选项。使用add_library命令指定生成动态库,并包含.c文件。确保NDK工具链配置正确,然后通过cmake --buildndk-build命令进行编译,最终生成.so文件。

回到顶部