当创建本机 Android
NDK 项目与新视觉studio 2015年预览和改变到"LLVM libc + + 静态库 (c + + _static)",STL 只包括 <cmath>
在默认"main.cpp"文件和使用默认锵 3.4 编译导致以下问题︰
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Apps\android-ndk-r10\sources\cxx-stl\llvm-libc++\libcxx\include\cmath(652,8): error : no member named 'float_t' in the global namespace
1> using ::float_t;
1> ~~^
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\Apps\android-ndk-r10\sources\cxx-stl\llvm-libc++\libcxx\include\cmath(653,8): error : no member named 'double_t' in the global namespace
1> using ::double_t;
1> ~~^
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\Apps\android-ndk-r10\sources\cxx-stl\llvm-libc++\libcxx\include\cmath(680,85): error : use of undeclared identifier 'acosl'
1> inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __x) _NOEXCEPT {return acosl(__x);}
......和更多。
这永远不会导致问题,当使用 Eclipse,所以不知道我做错了或如果是默认项目问题吗?
编辑︰ 现在我已经修正了票向添加 Microsoft 连接︰
为此原因在于 <math.h>
存在的 android
平台 19 和下边有包围这些 typedef
#if 0
#endif
块。对于这些平台,这些 extra
定义在
$(VS_NdkRoot)/sources/android/support/include
只在 Visual Studio 项目中包括此文件夹 settings
导致成功编译。
顺便说一句, <math.h>
文件为平台 21 在较新的 NDK-10 c 看起来固定 (所以你不需要包括支持文件夹),然而视觉studio 2015年预览安装版本 10。当用 10 c 替换已安装的版本 10,然后咱们到目标平台 21 项目资源管理器中的选项 (虽然官方不支持)。这很好,编译并虽然它的目标平台 21,应该可以解决这个问题之前。
这里是有关 Android
bug 报告 (它是一个 Visual Studio 的问题,它应包括此文件夹中的默认项目)︰
https://code.google.com/p/android/issues/detail?id=79890&thanks=79890&ts=1416335194
编辑︰ 改变旧的 NDKRoot 宏与较新的 VS_NdkRoot 宏。