13

私は emscripten を学んでいますが、C++ と JS の間で文字列を渡すときに、最も基本的な文字列操作を行うことさえできません。

たとえば、文字列の長さ関数を書きたいと思います。C++ の場合:

extern "C" int stringLen(std::string p)
{
    return p.length();
}

次のように JavaScript から呼び出されます。

var len = _stringLen("hi.");

これは0私にとって有益です。これを期待どおりに機能させるにはどうすればよいですか? ここではどの文字列型を使用すればよいですか? char const*? std::wstring? std::string? どれも機能していないようです。私はいつもかなりランダムな値を取得します。

これはほんの始まりにすぎません...どうすればこのようにC++から文字列を返すことができますか?

extern "C" char *stringTest()
{
    return "...";
}

そしてJSで:

var str = _stringTest();

繰り返しますが、これを機能させる方法が見つかりません。私はいつもJSでゴミを手に入れます。

したがって、私の質問は明確です: Emscripten を介して JS と C++ の間で文字列型をマーシャリングするにはどうすればよいですか?

4

3 に答える 3