3

c#コード-

string s="おはよう";

sをwstringとしてc++dllに送信したい
..c#で文字列をwstringに変換する方法は?

4

1 に答える 1

4

Astd::wstringは、C++ ランタイムによって割り当てられ、実装に依存する内部形式を持つ C++ オブジェクトです。C# プログラムでそれらの 1 つを作成し、それをアンマネージ C++ コードに渡す方法を理解できるかもしれませんが、そうするのはやや難しく、危険を伴います。a の内部構造std::wstringは実装に依存するため、C++ コンパイラまたはランタイム ライブラリを変更すると、ソリューションが機能しなくなります。

あなたがやろうとしていることは、通常、LPTStrパラメーターを受け取り、それを に変換してから、std::wstring呼び出したい C++ 関数を呼び出す C++ でインターフェイス レイヤーを作成することによって行われます。つまり、呼び出したい関数が次のように宣言されている場合です。

int Foo(std::wstring p);

インターフェース関数を書きます:

int FooCaller(LPTSTR p)
{
    std::wstring str = p;
    return Foo(str);
}

FooCallerそして、C# プログラムから呼び出します。

つまり、C# は を作成して渡すことができないためstd::wstring、変換レイヤーを使用します。

于 2012-05-17T14:19:44.843 に答える