2

我正在尝试通过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 版本编译项目。

还有什么我应该在这里做的吗?

更多的

这个线程之后,我决定包括这个:

#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再次找到函数时编译器会挂起。

4

3 回答 3

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
于 2015-03-18T16:40:37.080 回答
0

尝试使用 atoi 而不是 stoi。Altough atoi 在错误时返回零,但它适用于命令行编译

于 2014-05-17T19:14:02.137 回答
0

您可以使用 sstream 库进行 int 到 str 的转换过程,它有些长但可以工作:

#include <sstream>
std::stringstream myStringStream ; 
myStringStream << myInteger;
myString = myStringStream.str();
于 2015-03-05T13:16:53.777 回答