小编Try*_*olm的帖子

_GLIBCXX_USE_C99未定义,to_wstring不可用

我遇到了一个非常严重(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++ …

android stl visual-studio android-ndk c++11

1
推荐指数
1
解决办法
992
查看次数

标签 统计

android ×1

android-ndk ×1

c++11 ×1

stl ×1

visual-studio ×1