HarmonyOS鸿蒙Next中无法使用.so中export的方法

HarmonyOS鸿蒙Next中无法使用.so中export的方法

{ TBDeviceInfo } from ‘libtbrest_dynamic.so’; 明明打包后的hap中有ibtbrest_dynamic.so,且export了TBDeviceInfo,报错
Error message: the requested module ‘@normalized:Y&&&libtbrest_dynamic.so&&’ does not provide an export name ‘TBDeviceInfo’ which is imported by ‘&@taobao-ohos/tbrest/src/main/ets/tbrest_init_task&0.1.19’


更多关于HarmonyOS鸿蒙Next中无法使用.so中export的方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

【问题定位】
楼主先排查一下:

  • 通过错误日志锁定问题SO的名字,并在CMakeLists.txt文件中找到对应的配置项;
  • 查看是否有编译缓存文件。

【分析结论】

  • 可能是CMake配置里,对应的SO关联的选项未打开,或者未配置库的搜索路径;
  • 可能之前的编译缓存影响,编译使用了缓存,未刷新成正确的配置。

【修改建议】

  • 检查并更正对应的配置选项;
  • 删除缓存的.CXX文件夹,重新执行编译。

更多关于HarmonyOS鸿蒙Next中无法使用.so中export的方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在hilog里面搜下你这个动态库,应该有报错导致的。

在HarmonyOS鸿蒙Next中,如果无法使用.so文件中的export方法,可能是由于以下原因:

  1. 符号未导出:确保.so文件中的方法已正确导出,使用__attribute__((visibility("default")))-fvisibility=hidden编译选项。

  2. ABI兼容性:检查.so文件与HarmonyOS的ABI是否兼容,确保使用相同的架构和编译工具链。

  3. 加载问题:确认.so文件已正确加载,使用dlopendlsym检查符号是否存在。

  4. 权限问题:确保应用有权限访问.so文件,检查文件路径和权限设置。

  5. 依赖缺失:确认.so文件的所有依赖库都已正确安装和加载。

通过以上步骤排查问题,确保.so文件中的方法能够正常使用。

回到顶部