私は現在、C++ でアプリケーションに取り組んでおり、それは Lua に結び付けられ、Flash に (この順序で) 結び付けられます。現時点での私の目標は、wchar_t
Lua を介して C++ から Flash に s を取得することです。どうすればこれを達成できるかについての洞察が欲しいです!
その他の情報が必要な場合は、お問い合わせください。提供できるよう最善を尽くします。
私が試したこと
Lua が Unicode のファンではないことは理解していますが、それでも私の C++ アプリケーションからバイト文字列を受け取ることができるはずです。これらのバイトを Flash に渡して、意図した Unicode をレンダリングする方法が必要だと思います。だから私がこれまでにやったこと:
C++:
//an example wchar_t*
const wchar_t *text = L"Test!";
//this function pushes a char* to my Lua code
lua.PushString((char*)text); //directly casting text to a char*... D:
ルア:
theString = FunctionThatGetsWCharFromCpp();
flash.ShowString(theString);
閃光:
function ShowString(theString:String)
{
myTextField.text = theString;
}
ここでの結果は、myTextField
「T」のみが表示されることです。これは私には理にかなっています。特に "T" は a の両方のバイトを実際には使用しないため、wchar_t
toからのキャストchar
は s にいくつかのゼロを埋め込むことになります。ドキュメントをざっと見てみると、次のようになります。char
wchar_t
lua_pushstring
文字列にゼロを埋め込むことはできません。最初のゼロで終了すると見なされます。
だから私は少しテストを実行しました:
C++:
//prefixing with a Japanese character
//which will use both bytes of the wchar_t
const wchar_t *text = L"たTest!";
Flash のテキストボックスに「_0T」、3 文字が表示されるようになりました。日本語の文字の 2 バイト + T、そして終端です。
何が起こっているのかは理解していますが、この問題にどう対処すればよいのか、まだ完全にはわかりません。そして、何を検索すればよいか本当にわかりません。C++ から Lua にバイトの塊を渡すために使用できる特定の Lua 関数はありますか (lua_pushlstring
これによく使用される場所を読んだことがありますが、最初のゼロでも終了します)。これらのバイトを受け入れる Flash データ型はありますか? その場合、読み取り可能なマルチバイト文字列に変換する必要がありますか? それともこれは本当に不可能ですか?
注:
私は Unicode やコード ページなどにあまり詳しくないので、Flash で正しいエンコーディングを指定して正しいエンコーディングを取得できるようにする必要があるかどうかもわかりません。出力 - しかし、そこに着いたら喜んでその橋を渡ります。