我的Visual Studio 2017社区版中有一个包含两个项目类型.androidproj(Android)和.vcxproj(C ++)的解决方案。我使用android-ndk-r13b
作为C ++部分。
自从Visual Studio 2017 Community Edition版本15.5.7
更新到15.6.1
(release notes)后,我遇到以下阻止错误:
error : use of undeclared identifier 'acosl'
查看构建输出中的表示行:
In file included from C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b\sources\android\support\include\math.h:31:
C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b\sources\cxx-stl\llvm-libc++\include\math.h(661,91): error : use of undeclared identifier 'acosl'
inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __lcpp_x) _NOEXCEPT {return acosl(__lcpp_x);}
在acosl
旁边,还找不到所有其他数学函数。
不幸的是,这些帖子在我的案例中没有帮助:
任何暗示我可以尝试的东西?
更新
minSdkVersion
设置为15
。在Visual Studio更新之前编译的解决方案没有错误。
答案 0 :(得分:1)
使用15.6,他们似乎在MSBuild文件中引入了一个更改“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ VC \ VCTargets \ Application Type \ Android \ 3.0 \ Default .props“包含一堆Visual Studio的Android构建过程的默认输入值(MSBuild属性)。
导致此问题的更改是UseOfStl
的新默认值,现在为c++_static
,而在之前的版本中为gnustl_static
。
如上所述,这只是一个默认值,因此您可以通过在受影响的vcxproj文件中明确设置正确的值c++_static
来解决此问题。
最简单的方法是打开vcxproj的属性页面,在“常规”页面中将“使用STL”设置为“GNU STL静态库(gnustl_static)”,如屏幕截图所示。
请注意,此问题已在此处发布为错误:https://developercommunity.visualstudio.com/content/problem/211533/visual-studio-update-156-breaks-c-android-app-buil.html