HarmonyOS 鸿蒙Next:modules-cpp-typs下的oh-package.json5与.d.ts文件的关系可否是一对多的

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:modules-cpp-typs下的oh-package.json5与.d.ts文件的关系可否是一对多的

entry引用modules(har),modules的cpp-types中有3个cpp(A.cpp、B.cpp、C.cpp)代码,在三个cpp里面都调用了
static napi_value Init(napi_env env, napi_value exports)方法和napi_module_register(&frameModule)方法(这里modname分别对应a’,b’,c’)

首先,我的诉求是entry能够调用modules里export出去的所有native方法。
但目前我理解是需要打成三个a’.so、b’.so、c’.so对外提供才可以实现?是否可以合并成同一个so?

如果modules-cpp-typs下的一个oh-package.json5对应三个cpp的.d.ts,是否可以输出一个so文件对外支持三个cpp的方法?如果可以的话,那上述napi_module_register方法中modname是不是就变成了一个?

2 回复
因为在三个cpp里都进行了模块注册,所以是会打包出三个so的

1、可以在CmakeLists.txt文件中

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

并将三个cpp合并进一个统一的modulename中,只进行一次模块注册,这样三个cpp文件都会打包进libentry.so中

2、不同的的modulename对应不同的so,如回答1,您可以将三个cpp文件合并并指定一个统一的modulename,这样就可以打包进同一个so里。不用把三个类合并成一个类,您可以把不同的类写在不同的cpp文件里,对应的cpp文件包含类的函数。然后在napi_init.cpp里引用这些类的头文件,最后在napi_init.cpp里统一进行模块注册(napi__module_register),这样就可以打进一个so包里,即modulename统一,然后调用一次napi__module_register即可。

在HarmonyOS鸿蒙Next中,关于modules-cpp-typs下的oh-package.json5与.d.ts文件的关系,确实可以存在一对多的情况,但具体实现取决于项目的配置和需求。

oh-package.json5文件是鸿蒙系统应用的核心配置文件,用于定义应用的基本信息、依赖关系、构建配置等。而.d.ts文件是TypeScript中的声明文件,用于为JavaScript库或没有直接包含类型信息的代码提供类型注释。

在modules-cpp-typs目录下,一个oh-package.json5文件可以配置多个.d.ts文件,这些.d.ts文件分别对应不同的C++模块或组件,为它们提供类型声明。然而,需要注意的是,由于C++模块可能通过不同的方式(如静态库、动态库)进行编译和链接,因此在实际项目中,可能需要根据编译和链接的方式来调整oh-package.json5和.d.ts文件的配置。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部