HarmonyOS modules-cpp-types下的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是不是就变成了一个?

HarmonyOS
4天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

因为在三个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即可。

分享
微博
QQ
微信
回复
4天前
相关问题
oh-package.json5实现动态依赖方式
1064浏览 • 1回复 待解决
HarmonyOS SDK .d.ts 声明问题
1095浏览 • 1回复 待解决
HarmonyOS oh_package.json5依赖传递问题
989浏览 • 1回复 待解决
怎么让项目全局使用d.ts
3553浏览 • 1回复 待解决