0
這是我的C++非託管dll代碼。爲什麼ByRef在傳遞給非託管代碼時出現異常?
void Only(char *a)
{
*a++ = 'p';
*a++ = 'r';
*a++ = 'a';
*a++ = 'n';
*a++ = 'i';
*a++ = 0;
}
.def文件用於導出符號。
我只用功能在VB.Net應用程序如下,
Declare Sub Only Lib "dllproj2.dll" Alias "Only" (b As StringBuilder)
....
Dim s As StringBuilder = New StringBuilder()
Only(s)
它工作正常。但是當我嘗試按如下方式使用b作爲ByRef時,
Declare Sub Only Lib "dllproj2.dll" Alias "Only" (ByRef b As StringBuilder)
它給出了圖像中顯示的異常。
我不明白爲什麼。 ByRef在這裏更合適嗎?
謝謝。
很難看出它如何可靠地工作。 'StringBuilder'類怎麼可能知道C++函數需要多少存儲? –
@JonathanPotter應該怎樣解決這個問題?以及如何刪除ByRef使其工作? –