C++のdllをC#から呼び出すときに、C++で操作した文字列をC#に返したいです。その際、以下のような実装を想定できます
1.C#側ではstringbuilder型の変数を渡し、C++側の引数をchar型で受け取る
2.C#側ではstringbuilder型の変数を渡し、C++側の引数をstring型で受け取る
上記において1の方法では操作した文字列をC#側に返すことができたのですが、2の方法がわかりません。2の方法でも可能なのでしょうか?
やりたいこと
C#
1[DllImport("xxx.DLL", CallingConvention = CallingConvention.StdCall)] 2stringbuilder s1 = new stringbuilder(128); 3public static extern bool func1(stringbuilder s1);
C++
1__declspec(dllexport) bool func1(std::string& s1) 2{ 3 std::string s2 = "abc"; 4 s1 = s2; 5 return true; 6}
このときC#にもどったときにs1が"abc"となっていてほしいです。
しかし。この実装では望むような結果にはなりませんでした。
なにか誤っている点がありましたらご教授いただきたいです。
なにとぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/27 15:54