我Qt app
适用于android
。我正在编写几乎C++ 14
标准的代码。使用make_unique
&等功能make_shared
也是如此。
但是,当我尝试使用std::stoul
时,只能在android
上进行编译。它编译和编译适用于clang
和osx
上的iOS
Microsoft compiler on windows
。适用于error: 'stoul' is not a member of 'std'
。但只是无法在Android上编译,并出现以下错误: -
Qt app
我的NDK r13b
使用最新的android
来编译Qt app
的代码。
我搜索了很多&发现人们面临的类似问题如here& here。 但是,我需要一种方法来解决android
问题。 Qt App
我在.pro
的{{1}}文件中添加了以下内容。但是没有用。
如何使用最新std::stoul
Qt app
为android
NDK r13b
编译.pro
?
还尝试将以下块添加到我应用的android {
QMAKE_CXXFLAGS_RELEASE += -std=c++1y
QMAKE_CXXFLAGS_DEBUG += -std=c++1y
CONFIG += c++14
QMAKE_APP_FLAG +=c++_static
}
文件中。 但没有帮助。
{{1}}
答案 0 :(得分:1)
解决此问题的最简单方法是将函数注入命名空间std。请注意,您可能需要以更正确的方式实现这些,因为我只是在某些代码中被剔除以使其看起来正确。所以创建一个名为你喜欢的新文件并添加:
#ifndef MYFILE_H
#define MYFILE_H
#if defined(__ANDROID__)
namespace std {
unsigned long stoul(const std::string &str)
{
if (str.length() == 0) {
return 0;
}
auto returnValue = atoi(str.c_str());
if (returnValue == 0) {
throw std::invalid_argument("stoul: invalid string " + str);
}
return returnValue;
}
}
#endif
#endif //MYFILE_H