android-ndk - Android NDK 中缺少 std::wstring 支持的解决方案?

标签 android-ndk wchar-t wstring stlport

我有一个游戏,它在数千个地方使用 std::wstring 作为其基本字符串类型,并使用 wchar_t 及其函数进行操作:wcsicmp() wcslen() vsprintf() 等。

问题是 R5c 不支持 wstring(撰写本文时的最新 ndk)。

由于国际化,我无法更改代码以使用 std::string 并且我会破坏许多游戏使用的游戏引擎......

我有哪些选择?

1 - 用我自己的字符串类替换 string 和 wstring

这会给我更好的平台独立性,但重新实现轮子是荒谬的。
我已经开始使用字符串的 COW 实现。我需要它是 COW,因为我将它们用作 hash_maps 中的键。
这当然需要大量工作并且容易出错……但似乎这是我可以做的。

2 - 尝试使用我自己的 C 标准库(wcslen、mbstowcs ...)的宽字符字符串函数的实现来修复重新编译 STLPort 的 NDK

这将是更好的方法......但我不知道该怎么做:(

如何替换 libstdc++.a 或 libSTLport_static.a 中的函数(比如 wcslen)? (不知道他们在哪里:()

而且我不确定我需要重新实现哪些功能,我知道 wcslen 不起作用,所以我想它们应该全部......

3 - 你还有其他想法吗?

我等不及对此进行官方修复,如果我不知道如何做 #2,我将不得不使用选项 #1。

我在某处读到,如果你的目标是 2.3,你可以使用 wstrings,但我应该以 Android 2.1 为目标。

PS:忘了说我当然需要使用STL,但是没有RTTI,我可以毫无异常(exception)地生活。

提前致谢!

最佳答案

试用 CrystaX 的 NDK。早在官方谷歌支持之前,它就有了 STL 支持。当前版本 (r5) 基于官方 ndk r5,仍然是 beta 3,但它确实支持 wchar_t。

http://www.crystax.net/android/ndk-r5.php

关于android-ndk - Android NDK 中缺少 std::wstring 支持的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385643/

相关文章:

java - 如何从 NDK C++ 调用 Java?

android - 在 Android 上将 .so 代码从 ARM 转换为 x86

c++ - 打印 wchar_t 到控制台的内存泄漏问题?

winapi - Win32 : Determine whether stdout handle is char or wchar stream

C++ 在 wstring 中查找制表符

wstring - ChaiScript 中的 std::wstring

android - 配置 Sequoyah 调试 JNI 代码

java - C++ NDK 中的 "jobject"和 "jclass"有什么区别

visual-c++ - 使用 wcscat_s 连接两个 wchar_t* 时出现访问冲突错误

C++如何获取wstring的首字母