HarmonyOS鸿蒙Next中在native c++ 项目中如何实现注册多个模块

HarmonyOS鸿蒙Next中在native c++ 项目中如何实现注册多个模块 cke_505.png

cke_874.png

注册了两个模块,但是只有 entry/src/main/cpp/types/libentry/Index.d.ts 下面的能识别

cke_3206.png

这个下面的就报错了,是不支持吗?

cke_8836.png


更多关于HarmonyOS鸿蒙Next中在native c++ 项目中如何实现注册多个模块的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

最终产物需要拆分成多个,类似于:

add_library(a SHARED a.cpp)
add_library(b SHARED b.cpp)

更多关于HarmonyOS鸿蒙Next中在native c++ 项目中如何实现注册多个模块的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在CMakeList.txt中是加了内容的:

add_library(entry SHARED napi_init.cpp)
add_library(property SHARED napi_property.cpp)

不可以,

可以直接调用看看。我仔细看了下 你这个应该只是单纯的IDE识别不到的报错,不影响实际功能。这个可以关掉,

是的,IDE识别不到,是不影响实际功能. 是不用关注? 还是根本就是有问题,不然这种IDE不是应该更新.,

 这个内容是有的,不行. cke_438.png

在HarmonyOS Next的Native C++项目中,可通过在module.json5文件中配置多个"moduleName"来实现注册多个模块。每个模块需在"nativeLibraryPath"中指定对应的.so文件路径。在C++代码中,每个模块需实现独立的Init函数,并在napi_module_register中分别注册。

在HarmonyOS Next的Native C++项目中注册多个模块,需要确保每个模块都有正确的配置。从截图看,你的问题可能出在模块配置或路径上。

首先,检查每个模块的oh-package.json5文件,确保每个模块都正确声明了native依赖。例如:

"nativeDependencies": [
  "模块名"
]

其次,在build-profile.json5中,确认每个模块的externalNativeOptions配置正确指向对应的CMakeLists.txt文件。每个模块的CMakeLists.txt应该独立定义自己的库。

对于TypeScript类型定义,每个模块的.d.ts文件需要放在正确的目录结构下。确保entry/src/main/cpp/types/目录下每个模块都有对应的子目录和Index.d.ts文件。

如果第二个模块的类型无法识别,检查:

  1. 模块的oh-package.json5types字段是否正确指向了类型定义文件
  2. 确保在build-profile.json5中正确配置了该模块的构建选项

另外,Native C++模块的注册需要在应用启动时正确初始化。确保在AppScope或入口模块中正确导入和初始化所有Native模块。

回到顶部