Как изменение тысяч мест в Qt вызывает хорошее решение? Можно рекомендовать множество библиотек i18n, но это не был вопрос. (Я люблю Qt, но это просто неуместный ответ.)
я есть игра, которая использует std :: wstring в качестве базового строкового типа в тысячах мест, а также выполняет операции с wchar_t и его функциями: wcsicmp () wcslen () vsprintf () и т. Д.
Проблема в том, что wstring не поддерживается в R5c (последний ndk на момент написания этой статьи).
Я не могу изменить код для использования std :: string из-за интернационализации, и я бы сломал игровой движок, который используется во многих играх ...
Какие варианты у меня есть?
1 - заменить строку и wstring на мои собственные классы строк
Это дало бы мне лучшую независимость от платформы, но нелепо переопределять колесо. Я уже начал с COW реализации строк. Мне нужно, чтобы он был COW, потому что я использую их в качестве ключей в hash_maps. Это, конечно, много работы и подвержено ошибкам ... но, кажется, это то, что я могу сделать.
2 - Попытайтесь исправить NDK, перекомпилируя STLPort с моими собственными реализациями широких функций строки символов стандартной библиотеки C (wcslen, mbstowcs ...)
Это было бы предпочтительным способом ... но я понятия не имею, как это сделать :(
Как заменить функцию (скажем, wcslen) в libstdc ++. A или libstlport_static.a? (не уверен, где они находятся :()
И также я не уверен, какие функции мне нужно переопределить, я знаю, что wcslen не работает, поэтому я думаю, что они должны быть все ...
3 - У тебя есть другая идея?
Я не могу дождаться официального исправления для этого, и мне придется пойти с опцией # 1, если я не могу понять, как это сделать # 2.
Я где-то читал, что если вы нацелены на 2.3, вы можете использовать wstrings, но я должен нацелиться на Android 2.1.
PS: забыл сказать, что мне нужно использовать STL, конечно, но нет RTTI, и я могу жить без исключений.
Заранее спасибо!