HarmonyOS 鸿蒙Next API9-Native C++项目编译报错

HarmonyOS 鸿蒙Next API9-Native C++项目编译报错 因为搜不到ohos官方提供的功能组件,我需要下载使用第三方提供的C++库代码,自己编译成适合鸿蒙系统运行的.so库和ArkTS交互,但是使用

cmake -G "MinGW Makefiles" .

mingw32-make

命令编译之后总会报SDK内部的错误类似下面

cke_9375.png

Sdk/openharmony/9/native/llvm/include/libcxx-ohos/include/c++/v1\new:197:66: error: 'operator new' takes type size_t ('unsigned long long') as first
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC;
mingw64-12.1.0\mingw64\x86_64-w64-mingw32\include\corecrt.h:35:44: error: typedef redefinition with different types ('unsigned long long' vs 'unsigned int')
__MINGW_EXTENSION typedef unsigned __int64 size_t;

原因是什么呢,有什么解决办法吗,我对C++不是特别的熟悉,麻烦大哥大姐们帮忙指点一下~


更多关于HarmonyOS 鸿蒙Next API9-Native C++项目编译报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

您好,您的问题需要进一步分析,请您通过在线提单进一步解决:https://developer.huawei.com/consumer/cn/support/feedback/#/,感谢您的反馈和支持

更多关于HarmonyOS 鸿蒙Next API9-Native C++项目编译报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我现在也在用C++和C做原生的开发,看你的问题,你可以看看你的代码中size_t有没有红线,或你的值超出了size_t的范围。

在HarmonyOS鸿蒙Next API9中,Native C++项目编译报错可能涉及以下原因:

  1. NDK版本不匹配:确保使用的NDK版本与鸿蒙Next API9兼容。版本不匹配可能导致编译错误。

  2. API级别设置错误:检查项目的build.gradleCMakeLists.txt文件,确保API级别设置为API9。错误的API级别可能导致无法找到相关库或函数。

  3. 依赖库缺失或版本冲突:确认项目中所有依赖库已正确添加,并且版本与API9兼容。缺失或版本冲突的依赖库会导致编译失败。

  4. 编译器选项配置错误:检查编译器的选项配置,如CMakeLists.txt中的CMAKE_CXX_FLAGS等,确保其与API9的要求一致。

  5. 头文件路径错误:确保所有头文件的路径正确配置,避免因路径错误导致编译器找不到头文件。

  6. 符号冲突:检查项目中是否有重复定义的符号或函数,符号冲突会导致链接错误。

  7. ABI不兼容:确认项目的ABI(应用二进制接口)设置与目标设备兼容,ABI不兼容会导致编译或运行时错误。

  8. 工具链配置错误:检查工具链配置,确保使用的工具链支持鸿蒙Next API9。错误的工具链配置可能导致编译失败。

  9. 系统库缺失:确认项目中使用的系统库在鸿蒙Next API9中可用,缺失的系统库会导致编译错误。

  10. 编译器错误信息:详细阅读编译器输出的错误信息,根据错误信息定位问题。

通过以上步骤,可以逐步排查并解决HarmonyOS鸿蒙Next API9中Native C++项目的编译报错问题。

回到顶部