何千もの場所で基本的な文字列型として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はなく、例外なく生きることができます。
前もって感謝します!