参考答复:1、ArkTS动态加载so可以通过动态import@Entry @Component struct Index { @State message: string = 'Hello World'; build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) .onClick(async () => { //加载so let module = await import("libentry.so") //调用so中的方法 console.log("testTag", module.default.add(1, 2)) }) } .width('100%') } .height('100%') } }2、c++动态加载so可以通过dlopen标准库函数。// path:从ArkTS侧传递so文件的沙箱路径(注意路径要从ArkTS侧传递、不然有可能找不到路径、具体代码后续会列出) int getb(char *path, int a, int b) { void *handle = dlopen(path, RTLD_LAZY); // 打开一个动态链接库.路径为path if (!handle) { return 0; } FUNC_SUB sub_func = (FUNC_SUB)dlsym(handle, "sub"); // 获取函数名为sub的函数 int res = sub_func(a, b); // 调用函数 dlclose(handle); // close动态链接库 return res; }
参考答复:
1、ArkTS动态加载so可以通过动态import
2、c++动态加载so可以通过dlopen标准库函数。