Как изменение тысяч мест в 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, и я могу жить без исключений.

Заранее спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос