我有一个游戏,它在数千个地方使用 std::wstring 作为其基本字符串类型,并使用 wchar_t 及其函数进行操作:wcsicmp() wcslen() vsprintf() 等。
问题是 R5c 不支持 wstring(撰写本文时的最新 ndk)。
由于国际化,我无法更改代码以使用 std::string 并且我会破坏许多游戏使用的游戏引擎......
我有哪些选择?
1 - 用我自己的字符串类替换字符串和 wstring
这会给我更好的平台独立性,但重新实现轮子是荒谬的。我已经开始使用字符串的 COW 实现。我需要它是 COW,因为我将它们用作 hash_maps 中的键。这当然需要大量的工作并且容易出错......但似乎这是我可以做的事情。
2 - 尝试使用我自己实现的 C 标准库的宽字符字符串函数(wcslen、mbstowcs ...)修复 NDK 重新编译 STLPort
这将是更可取的方式......但我不知道该怎么做:(
如何替换 libstdc++.a 或 libstlport_static.a 中的函数(比如说 wcslen)?(不确定它们在哪里:()
而且我不确定我需要重新实现哪些功能,我知道 wcslen 不起作用所以我想它们应该都是......
3 - 你有其他想法吗?
我等不及官方解决这个问题,如果我不知道如何做#2,我将不得不选择#1。
我在某处读到,如果您以 2.3 为目标,则可以使用 wstrings,但我应该以 Android 2.1 为目标。
PS:忘了说我当然需要使用STL,但没有RTTI,我可以毫无例外地生活。
提前致谢!