通过build_native.py编译cocos2d-x会返回:' to_string'在这方面没有申明

时间:2014-05-15 15:07:39

标签: c++ c++11 cocos2d-x cocos2d-x-3.0

我正在尝试通过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函数时,编译器会挂起。

3 个答案:

答案 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();