HarmonyOS 鸿蒙Next API9-Native C++项目编译报错
HarmonyOS 鸿蒙Next API9-Native C++项目编译报错 因为搜不到ohos官方提供的功能组件,我需要下载使用第三方提供的C++库代码,自己编译成适合鸿蒙系统运行的.so库和ArkTS交互,但是使用
cmake -G "MinGW Makefiles" .
和 mingw32-make
命令编译之后总会报SDK内部的错误类似下面
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
您好,您的问题需要进一步分析,请您通过在线提单进一步解决: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++项目编译报错可能涉及以下原因:
-
NDK版本不匹配:确保使用的NDK版本与鸿蒙Next API9兼容。版本不匹配可能导致编译错误。
-
API级别设置错误:检查项目的
build.gradle
或CMakeLists.txt
文件,确保API级别设置为API9。错误的API级别可能导致无法找到相关库或函数。 -
依赖库缺失或版本冲突:确认项目中所有依赖库已正确添加,并且版本与API9兼容。缺失或版本冲突的依赖库会导致编译失败。
-
编译器选项配置错误:检查编译器的选项配置,如
CMakeLists.txt
中的CMAKE_CXX_FLAGS
等,确保其与API9的要求一致。 -
头文件路径错误:确保所有头文件的路径正确配置,避免因路径错误导致编译器找不到头文件。
-
符号冲突:检查项目中是否有重复定义的符号或函数,符号冲突会导致链接错误。
-
ABI不兼容:确认项目的ABI(应用二进制接口)设置与目标设备兼容,ABI不兼容会导致编译或运行时错误。
-
工具链配置错误:检查工具链配置,确保使用的工具链支持鸿蒙Next API9。错误的工具链配置可能导致编译失败。
-
系统库缺失:确认项目中使用的系统库在鸿蒙Next API9中可用,缺失的系统库会导致编译错误。
-
编译器错误信息:详细阅读编译器输出的错误信息,根据错误信息定位问题。
通过以上步骤,可以逐步排查并解决HarmonyOS鸿蒙Next API9中Native C++项目的编译报错问题。