我正在使用这个dll,其中一个方法需要字符串作为参数out,即
void function(out string param);
当我将字符串传递出去时,程序崩溃了。我正在使用C#。 我在VS2010的输出调试窗口中得到的输出如下: 程序'[4116] Managed(v4.0.30319)'已退出,代码为-1073741819(0xc0000005)。
问题是突然而短暂的,所以我不知道如何进一步解释,但如果你有进一步的问题,请告诉我......
更新: 这是ActiveX DLL,我遇到了教程,提到COM返回Unicode中的字符串。这是导致问题的原因吗?
答案 0 :(得分:1)
如何调试:
这似乎是本机/托管互操作的问题。因此,请确保将VS调试器设置为x86的混合(本机/托管)或x64的纯本机。
关闭“仅我的代码”(选项 - >调试)并启用Debug-> Exceptions->当为本机异常抛出时。
这样你就可以堆叠并看看发生了什么。
注意:拥有C和C#部件的源代码可以避免需要调试......
答案 1 :(得分:1)
你怎么称呼它,你在方法调用中包含'out'字样吗?
string str;
function(out str);
答案 2 :(得分:0)
我同意上面的Ed S.尝试使用StringBuilder,因为您在托管代码和非托管代码之间传递参数。不幸的是,由于你没有本机代码,所以你不会调试太多。