Я работаю над игрой на основе Cocos2d-x 2.x.
Я создаю std :: map и вставляю пару строк:
std::map<std::string, std::string> props;
std::string value("1");
std::string key("type");
props.insert(std::pair<std::string, std::string>(key, value));
На iOS 6 и 7 работает нормально. На iOS 5 вылетает на insert
с EXC_BAD_ACCESS (код = 1, адрес = 0x6), и отладчик выделяет последнюю строку кода в iOS 7.1 > usr/include > c++ > 4.2.1 > bits > stl_pair.h
:
/** There is also a templated copy ctor for the @c pair class itself. */
template<class _U1, class _U2>
pair(const pair<_U1, _U2>& __p)
: first(__p.first), second(__p.second) { }
};
В исходном коде Cocos2d-x тот же код работает нормально, например, в CCFileUtils.cpp (fullPathForFilename
метод).
Что я делаю не так?
Я тоже с этим сталкиваюсь. Отлично работает на iOS 6 и iOS7. И он прекрасно работает в режиме отладки на iOS 5. Похоже, это связано с XCode 5.1 или iOS SDK 7.1. Предыдущая версия нашего приложения (до Xcode 5.1 и iOS SDK 7.1) прекрасно работает на iOS 5.
Может быть, это связано с тем, что компилятор C / C ++ использует Xcode 5?
Попробуйте сравнить GCC_C_LANGUAGE_STANDARD
, CLANG_CXX_LANGUAGE_STANDARD
, CLANG_CXX_LIBRARY
создать настройки для вашей цели в Xcode 4/5.