これは私の C++ アンマネージ dll コードです。
void Only(char *a)
{
*a++ = 'p';
*a++ = 'r';
*a++ = 'a';
*a++ = 'n';
*a++ = 'i';
*a++ = 0;
}
.def ファイルは、シンボルのエクスポートに使用されます。
次のように、VB.Net アプリケーションで Only 関数を使用しました。
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の方が適切ではありませんか?
ありがとう。