我正在尝试通过build_native.py
脚本为Android构建cocos2d-x 3.0(稳定)项目,但是当类使用std::to_string
(或std::stoi
)时它会挂起功能。在Xcode下构建项目完全没有问题,只是命令行编译失败了。
我已经在所有使用这些功能的类中导入<string>
,但没有成功。我还修改了Application.mk
文件,如下所示:
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -DCOCOS2D_DEBUG=0 -std=c++11 -Wno-literal-suffix -fsigned-char
添加-std=c++11
标志以确保使用C ++ 11版本编译项目。
我还有什么需要做的吗?
关注this thread我决定将其包括在内:
#if CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
string to_string(int t) {
ostringstream os;
os << t;
return os.str();
}
#endif
在我的标题中,因为我只是使用带有整数输入的to_string
。这不是一个好的解决方案,但工作正常......但是当编译器再次找到stoi
函数时,编译器会挂起。
答案 0 :(得分:1)
我最终使用了这段代码:
#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
string to_string(int t) {
ostringstream os;
os << t;
return os.str();
}
int stoi(const string myString) {
return atoi(myString.c_str());
}
#endif
答案 1 :(得分:0)
尝试使用atoi而不是stoi。 Altough atoi在出错时返回零,但它适用于命令行编译
答案 2 :(得分:0)
你可以使用sstream库做int到str的转换过程,它有点长但是有效:
#include <sstream>
std::stringstream myStringStream ;
myStringStream << myInteger;
myString = myStringStream.str();