gpt4 book ai didi

c++ - 为什么 ByRef 在传递给非托管代码时给出异常?

转载 作者:行者123 更新时间:2023-11-28 03:07:11 25 4
gpt4 key购买 nike

这是我的 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)

它给出了图像中显示的异常。

enter image description here

我不明白为什么。 ByRef 在这里不是更合适吗?

谢谢。

最佳答案

它必须是 ByVal。该函数不会覆盖对 StringBuilder 本身的引用。它宁愿更新 StringBuilder 的内容。 (有关类似问题,请参阅 here。)

关于c++ - 为什么 ByRef 在传递给非托管代码时给出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19400738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com