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

2023-11-30

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

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

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

我有哪些选择?

1 - 用我自己的字符串类替换 string 和 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,我可以毫无例外地生活。

提前致谢!


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android NDK 中缺少 std::wstring 支持的解决方案? 的相关文章

随机推荐

  • 如何在Golang中访问嵌套的Json键值

    团队 编程新手 解组 Json 后 我有可用的数据 如下所示 其中包含嵌套的 Key 值 我能够访问的平面键值 如何访问嵌套键值 这是解组后的字节切片数据 如下所示 gt tables map name basic snatpool mem
  • Bootstrap .popover('show')、.popover('hide') 不起作用。将其绑定到点击作品

    我有一个已绑定到弹出框的按钮 当有人单击弹出窗口中的表情符号之一时 我想隐藏弹出窗口 然而 smiley popover hide 不起作用 不幸的是 我无法用准系统代码重现这一点 它只发生在实时站点上 即https coinchat or
  • 作为不同用户的 RPM %post

    我需要在 RPM 的 post 部分中以不同用户身份运行命令 目前我正在通过 python 使用一些 hack 但这不是最好的方法 它确实感觉有点脏 post p usr bin python import os pwd subproces
  • 将一个向量中的每个元素与第二个向量中的每个元素相加

    我想将一个向量中的每个元素与另一个向量中的每个元素相加 如下所示 but避免 for 循环 有没有简单的方法呢 vadd lt function vrow vcol vmatrix lt matrix nrow length vrow nc
  • 静态内容不能引用非静态方法

    我无法编译以下代码 public class Test public static void main String args int a calcArea 7 12 System out println a int calcArea in
  • 如何使用斯坦福解析器将文本拆分为句子?

    如何使用将文本或段落拆分为句子斯坦福解析器 有没有什么方法可以提取句子 比如getSentencesFromString 因为它是规定的Ruby 您可以检查 DocumentPreprocessor 类 下面是一个简短的片段 我认为可能还有
  • 遇到 0 时按组重置的 Cumsum

    下面是我的数据框 我想得到 是 列 我似乎无法理解cumsum当它根据 id 的 值 字段达到 0 时重置 还有其他类似的问题 但解决方案不适用于我的实际数据集 test lt data frame id c 1 1 1 1 2 2 2 2
  • 如何在具有2000万行数据集的MySQL中删除重复项?

    我有一个很大的 MySQL 数据库 我需要快速删除重复的项目 它看起来是这样的 id text1 text2 1 23 43 2 23 44 3 23 44 删除后 表的剩余部分应为 id text1 text2 1 23 43 3 23
  • 将数组存储在共享首选项中

    我有一个Array具有整数值 它会随着时间的推移而增长 它大约有最多 50 个值 我想将数组持久存储 因此我考虑将其存储在SharedPreferences 我知道其中不能存储复杂类型 但我也听说要序列化Array然后将其存储在Shared
  • 如何在使用 Electron-builder 构建 exe 后运行“sqlite3”

    我在以下人员的帮助下构建了我的电子应用程序https medium com jspoint packaging and distributing electron applications using electron builder 31
  • DOMPDF 中的自定义宽度和高度

    无论如何 我可以设置生成的 PDF 的宽度和高度吗 我想自定义PDF的宽度和高度 通常它会采用短铜版纸的尺寸 但我如何定制它 举例来说 我希望它的大小为 200 x 500 像素 任何想法将不胜感激 干杯 您可以通过在调用 DOMPDF s
  • Magento - 列出产品类别

    在 Magento 的每个产品详细信息页面上 我想列出属于哪些类别 我将如何实现这一目标 尝试一下 currentCatIds product gt getCategoryIds and also categoryCollection Ma
  • 在 primefaces 中绑定文件下载参数

    我想在 primefaces 中下载一个名称可能不同的文件 这是控制器的代码 ManagedBean name fileDownloadController eager true ViewScoped public class FileDo
  • 如何在不刷新整个页面的情况下重新加载DIV内容

    我只想用我得到的内容替换 DIV 内容 当我使用ajax向服务器发出get请求后 ajax type GET url http 127 0 0 1 8000 result age ageData occasion occasionData
  • 如何在仅支持常量表达式的函数中使用变量作为参数

    我正在使用这个功能 delay cycles var 我收到以下错误 论证到 delay cycles必须是常量表达式 很公平 但我怎样才能绕过这个呢 我每次都必须以不同的值延迟我的程序 我从 RS232 接收数据并将其存储在一个int多变
  • Python lambda函数下划线冒号语法解释?

    在以下 Python 脚本中 其中 aDict 是字典 0 在 lambda 函数中起什么作用 sorted aDict items key lambda 0 让我们把它分开 1 假设你有一个字典 di di one 1 two 2 thr
  • 如何判断会话是否处于活动状态? [复制]

    这个问题在这里已经有答案了 根据请求 您可以通过几种不同的方式来判断会话是否已启动 例如 isSessionActive session id Or isSessionActive defined SID 然而 如果您启动一个会话然后关闭它
  • Xamarin WKWebView 和 Cookie

    我有一个 Xamarin Forms 应用程序 它使用 cookie 来跟踪登录状态并同时使用 HTTPRequest 和 Webview 因此两者都需要共享 cookie 对于 UIWebView 这些 cookie 是共享的 无需我进行
  • cpuid命令显示信息的问题

    的信息llc缓存显示使用cpuid command在Linux上是 cache 3 cache type unified cache 3 cache level 0x3 3 self initializing cache level tru
  • Android NDK 中缺少 std::wstring 支持的解决方案?

    我有一个游戏 它在数千个地方使用 std wstring 作为其基本字符串类型 并使用 wchar t 及其函数进行操作 wcsicmp wcslen vsprintf 等 问题是 R5c 撰写本文时的最新 ndk 不支持 wstring