0

我正在使用这个 dll,其中一种方法期望字符串作为 out 的参数,即

void function(out string param);

当我将字符串传递出去时,程序崩溃了。我正在使用 C#。我在 VS2010 的输出调试窗口中得到的输出如下:程序'[4116] Managed (v4.0.30319)' has exited with code -1073741819 (0xc0000005)。

这个问题突然而短暂,所以我不知道如何进一步解释,但如果您还有其他问题,请告诉我......

更新:这是 ActiveX dll,我在教程中提到 COM 返回 Unicode 字符串。这是造成问题的原因吗?

4

3 回答 3

1

如何调试:

这似乎是本机/托管互操作的问题。因此,请确保您的 VS 调试器设置为 x86 的混合(本机/托管)或 x64 的纯本机。

关闭“仅我的代码”(选项->调试)并打开调试->异常->当引发本机异常时。

这样,您将拥有堆栈并查看发生了什么。

注意:拥有 C 和 C# 部分的源代码可以避免需要调试...

于 2012-05-10T21:01:25.543 回答
1

你怎么称呼它,你的方法调用中是否包含“out”字样?

string str;
function(out str);
于 2012-05-10T21:09:29.400 回答
0

我同意上面的 Ed S。尝试使用 StringBuilder,因为您在托管代码和非托管代码之间传递参数。不幸的是,由于您没有本机代码,因此您不会对其进行过多的调试。

于 2012-05-11T00:46:19.473 回答