-1
我想從一個非託管的C代碼發送一個字符串到託管的VB .Net,它運行在運行Linux和mono的Raspberry pi上。我通過從C++調用動態C庫來調試netbeans中的Dynamic C庫(.so)。這工作起來就像一個魅力,但是當我使用Mono在Linux中運行VB .Net時調用相同的函數時,它將返回一個空字符串。從本機C動態庫(.so)向Mono Linux中的VB.net發送字符串
下面的代碼
C
void HelloCstr(/*OUT*/ char* hello)
{
string s = ("Hello World");
strcpy(hello, s.c_str());
}
_
C++
std::string ss;
HelloCstr((char*)ss.c_str()); // ss is filled with "Hello World"
_
VB .Net
<DllImport("libDllTest", CharSet:=CharSet.Ansi)>
Public Shared Sub HelloCstr(str As System.Text.StringBuilder)
End Sub
Public Shared Function HelloWorld() As String
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder(200)
HelloCstr(sb) //After this call sb.Length == 0
Return sb.ToString() // this returns an empty string
End Function
我在做什麼錯?