【发布时间】:2013-10-24 09:49:32
【问题描述】:
这是我的 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在这里不是更合适吗?
谢谢。
【问题讨论】:
-
很难看出它是如何可靠地工作的。
StringBuilder类怎么可能知道 C++ 函数需要多少存储空间? -
@JonathanPotter 应该如何解决这个问题?以及如何删除 ByRef 使其工作?
标签: c++ .net vb.net interop unmanaged