首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Android NDK编译Boost时发生assert.h冲突

使用Android NDK编译Boost时发生assert.h冲突
EN

Stack Overflow用户
提问于 2012-01-16 14:44:55
回答 1查看 908关注 0票数 1

当尝试使用Android NDK编译一个带有Boost c++库的程序时,我得到以下类型的错误:

代码语言:javascript
复制
In file included from /home/afeder/android/0ad/jni/lib/boost/boost/assert.hpp:50,
                 from /home/afeder/android/0ad/jni/lib/boost/boost/random/linear_congruential.hpp:21,
                 from /home/afeder/android/0ad/jni/src/source/scriptinterface/ScriptInterface.h:34,
                 from /home/afeder/android/0ad/jni/src/source/ps/World.h:28,
                 from /home/afeder/android/0ad/jni/src/source/main.cpp:58:
/home/afeder/android/android-ndk-r7/platforms/android-5/arch-arm/usr/include/assert.h: At global scope:
/home/afeder/android/android-ndk-r7/platforms/android-5/arch-arm/usr/include/assert.h:63: warning: redundant redeclaration of 'void __assert(const char*, int, const char*)' in same scope
/home/afeder/android/android-ndk-r7/platforms/android-5/arch-arm/usr/include/assert.h:63: warning: previous declaration of 'void __assert(const char*, int, const char*)'
/home/afeder/android/android-ndk-r7/platforms/android-5/arch-arm/usr/include/assert.h:64: warning: redundant redeclaration of 'void __assert2(const char*, int, const char*, const char*)' in same scope
/home/afeder/android/android-ndk-r7/platforms/android-5/arch-arm/usr/include/assert.h:64: warning: previous declaration of 'void __assert2(const char*, int, const char*, const char*)'

显然,Boost提供的一组"assert“函数和NDK本身提供的函数之间存在某种冲突,但我该如何解决呢?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-01-16 15:01:45

头文件有#define宏,它封装了整个头文件内容。在您的源代码中,您可以取消定义您不需要的头。

例如,如果Boost头文件有#define BOOST_ASSERT_HPP,而NDK有ANDROID_ASSERT_H,那么在源代码中,您可以使用#undef BOOST_ASSERT_HPP取消定义Boost相关的头文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8876575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档