5

何千もの場所で基本的な文字列型としてstd::wstringを使用し、wchar_tとその関数(wcsicmp()wcslen()vsprintf()など)を操作するゲームがあります。

問題は、wstringがR5c(この書き込みの時点で最新のndk)でサポートされていないことです。

国際化のためにstd::stringを使用するようにコードを変更できず、多くのゲームで使用されているゲームエンジンを壊してしまいます...

どのオプションがありますか?

1-stringとwstringを独自の文字列クラスに置き換えます

これにより、プラットフォームの独立性が向上しますが、ホイールを再実装するのはばかげています。私はすでに文字列のCOW実装から始めました。hash_mapsのキーとして使用するため、COWである必要があります。もちろん、これは多くの作業とエラーが発生しやすいです...しかし、それは私ができることのようです。

2-C標準ライブラリ(wcslen、mbstowcs ...)のワイド文字列関数の独自の実装を使用してSTLPortを再コンパイルするNDKを修正してみてください

これは好ましい方法です...しかし、私はそれを行う方法がわかりません:(

libstdc ++。aまたはlibstlport_static.aの関数(たとえばwcslen)を置き換えるにはどうすればよいですか?(どこにあるかわからない:()

また、どの関数を再実装する必要があるのか​​わからないので、wcslenが機能していないことはわかっているので、すべてである必要があると思います...

3-他に何かアイデアはありますか?

これに対する公式の修正を待つことはできません。#2の方法がわからない場合は、オプション#1を選択する必要があります。

2.3をターゲットにするとwstringsを使用できるとどこかで読んだことがありますが、Android2.1をターゲットにする必要があります。

PS:もちろんSTLを使用する必要があると言うのを忘れましたが、RTTIはなく、例外なく生きることができます。

前もって感謝します!

4

3 に答える 3

1

CrystaX の NDK をお試しください。公式の Google よりずっと前に stl をサポートしていました。公式の ndk r5 に基づいている現在のバージョン (r5) はまだベータ 3 ですが、wchar_t をサポートしています。

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

于 2011-06-28T20:14:41.483 に答える
0

I'm suffering from the same problem as you, but my only other thought is to load the strings via the JNI (as jstring* in native land), then convert them to UTF characters as necessary. Take a look at the available JNI string functions here:
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html#string_operations

于 2011-06-22T12:07:06.057 に答える
0

Qtは、LGPLed である優れたコピー オン ライトで国際的に使いやすい文字列実装QStringを提供します。

理論的には、Qt ソースから抽出して、独自のプロジェクトで使用できます。QString の実装は、src/corelib/tools/qstring.hQtソース ダウンロードにあります。、、、およびincludes/classes (すべてフォルダーの下)も必要であり、コンパイル時に定義する必要があります。(これについては、手動でコンパイルするか、独自のスクリプト/Makefile を使用してコンパイルします。) 単純ではありませんが、いったん起動して実行すると、作業はずっと単純になります。便利な機能や機能がたくさん付いているので、車輪を再発明するよりはましです。.cppQCharQByteArrayQAtomicQNamespacecorelibQT_NO_STL_WCHAR

QString だけを取り除くのではなく、QtCore モジュール全体を使用することもできます。Android への Qt ポートについては、 android-lighthouse プロジェクトを参照してください。(また、何をするにしても、上記の「バニラ」リンクからソースを取得するよりも、そこからソースを取得する方がよい場合があります。)

于 2011-06-27T19:35:11.980 に答える