C#からc++のコードを呼び出し、文字列を取得する処理を実装しています。
返却して受け取りたい文字コードはUnicode形式です。
その際、C#で定義したStringBuilderに格納される文字が文字化けしてしまいます。
何が原因と考えられますでしょうか?
C++とのインタフェース
C#
1 2 3 [DllImport(DllName, EntryPoint = "CppCode", CharSet =CharSet.Unicode)] 4 [return: MarshalAs(UnmanagedType.LPWStr)] 5 internal static extern void TestCode(safeHandle ptr, [Out,MarshalAs(UnmanagedType.LPWStr)]StringBuilder str);
上記コードの呼び出し元
このコードのsbの値が文字化けします。
C#
1sb = new StringBuilder("",1500); 2TestCode(ptr, sb); 3
stringを返却するC++コード
C++
1extern "C" void CppCode(wchar_t **str) 2{ 3 std::string text = "ABCDEFG"; 4 *str= new wchar_t[text.length() + 1]; 5 mbstowcs(*str, text.c_str(), text.length()+1); 6}
回答1件
あなたの回答
tips
プレビュー