我遇到了一个非常严重(IMO)的问题.我在visual studio 2015中使用本机跨平台工具.
由于Visual Studio下载了标准库的几个实现
C:\ ProgramData \微软\ AndroidNDK\Android的NDK-r10e \来源\ CXX-STL \
当我开始寻找没有编译的stl类时,我感到很惊讶.
我注销了std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>>
不能作为gnu-libstdc ++的怪癖.
我试图将stl设置给其他人,看看他们是否更好.这是在visual studio项目属性窗口中完成的.
没有提供工具集或STL的组合std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>>
.
我接着说,"如果我必须自己实施这一功能,那么这不是世界末日."
然而不久之后我尝试使用to_wstring
.尽管如此wstring
,该功能仍未被识别.
这是一个太过分的步骤,所以我检查了gnu-libstdc ++实际上是否实际上已经实现了任何东西.事实上他们,看到了标准的21.5为Y.
我现在很困惑.我做了一些谷歌搜索,发现没有什么比"将它设置为c ++ 11"更重要.
除非Visual Studio没有使用以下设置执行任何操作,否则我假设正在正确调用GCC.
最后我在visual studio中打开了basic_string.h,以确保该函数实际存在.
这是3000行:
inline wstring
to_wstring(int __val)
{ return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, 4 * sizeof(int), L"%d", __val); }
Run Code Online (Sandbox Code Playgroud)
然后我通过阴影看到它被预处理器省略了.看哪,2847行:
#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \
&& !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
Run Code Online (Sandbox Code Playgroud)
问题不在于__cplusplus和_GLIBCXX_HAVE_BROKEN_VSWPRINTF._GLIBCXX_USE_C99未定义.
搜索此问题会产生一些堆栈溢出问题.
大多数评论似乎认为问题将通过GCC的新版本来解决.例如GCC 4.4.5.然而,因为visual studio下载了4.9 ...我不认为这只是版本的问题.
我在那里链接到一个三年前的错误报告,其中包含声明:
如果没有针对单个目标的特别努力,就不可能在GCC中修复,这是不会发生的.如果给定目标想要支持C++ …