HarmonyOS 鸿蒙Next:naive C++工程加载不了C++动态库,报“Cannot read property xx of undefined”

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

HarmonyOS 鸿蒙Next:naive C++工程加载不了C++动态库,报“Cannot read property xx of undefined”

naive C++工程加载不了C++动态库,报“Cannot read property xx of undefine” 

能编译 但是运行崩溃,提示Cannot read property xx of undefine

7 回复

我遇到依赖预编译库,预编译库带版本:

cke_748.png

直接将libmp3lame.so.0.0.0重命名为libmp3lame.so,调用任何方法都报错Cannot read property xx of undefine,后面修改为libmp3lame.so.0后就正常了。

官方文档有这么一个说明:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-ndk-36-V5

感谢,按照你的方法解决了,这也是个坑啊

不知道啥原理,方正是解决了,哈哈哈

对的 不知道什么原理,有没有编译过skia这个库啊?

检查native模块的build-profile是否配置abiFilters:

"externalNativeOptions": {
      "abiFilters": [
        "arm64-v8a",
        "x86_64"
      ],
      "path": "./src/main/cpp/CMakeLists.txt",
      "arguments": "",
      "cppFlags": ""
    }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

是否依赖了第三方的so库?确认so正确的使用ndk编译

abiFilters:没有加的话默认就是arm64-v8a,我是在真机上运行的

针对HarmonyOS中naive C++工程加载C++动态库时出现的“Cannot read property xx of undefined”错误,这通常不是直接由C++动态库加载问题引起的,而是JavaScript或TypeScript代码在尝试访问未定义或未正确初始化的对象属性时抛出的错误。

请检查以下几点:

  1. 确保所有JavaScript/TypeScript代码中的对象在使用前已正确定义和初始化。
  2. 检查是否有异步加载或执行顺序问题,确保在访问属性前对象已加载完成。
  3. 查看错误日志中的“xx”具体是什么属性,追踪其来源和赋值过程。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部