cor*_*bin 8 c++ android cmath android-ndk
我有一个stlTest2.cpp像这样的简单文件:
#include <jni.h>
#include <cmath>
bool isnan (void);
Run Code Online (Sandbox Code Playgroud)
在我移植的一些代码中有一些更复杂的东西.我的问题是这个.为什么在NDK之外使用GCC构建时会有效,而不是使用NDK?它给出的错误是这样的:
jni/stlTest2.cpp:6: error: expected unqualified-id before 'sizeof'
jni/stlTest2.cpp:6: error: expected ')' before 'sizeof'
Run Code Online (Sandbox Code Playgroud)
其直接原因是math.h(包括via <cmath>)定义isnan为宏.为什么ndk之外的构建不包括#definefrom math.h,但这是?如果我在代码中注释掉包含,那么一切都很好,但这是不可接受的,因为这个问题重复了......很多.
在 $ndk\sources\cxx-stl\gnu-libstdc++\libs\armeabi\include\bits\c++config.h (将armeabi更改为适当的值)中更改:
/* #undef _GLIBCXX_USE_C99_MATH */
Run Code Online (Sandbox Code Playgroud)
到
#define _GLIBCXX_USE_C99_MATH 1
Run Code Online (Sandbox Code Playgroud)
然后再次清理并构建您的项目。
| 归档时间: |
|
| 查看次数: |
3859 次 |
| 最近记录: |