【发布时间】:2012-05-10 20:55:33
【问题描述】:
我正在使用这个 dll,其中一种方法期望字符串作为 out 的参数,即
void function(out string param);
当我通过 out 传递字符串时,程序崩溃。我正在使用 C#。 我在 VS2010 的输出调试窗口中得到的输出如下: 程序“[4116] Managed (v4.0.30319)”已退出,代码为 -1073741819 (0xc0000005)。
这个问题突然而短暂,所以我不知道如何进一步解释,但如果您还有其他问题,请告诉我......
更新: 这是 ActiveX dll,我在教程中提到 COM 返回 Unicode 字符串。这是导致问题的原因吗?
【问题讨论】:
-
您有可用的 C 代码或 DLLImport 声明吗?
-
0xc0000005是访问冲突。通常,您会使用已知大小的StringBuilder作为本机函数的输出缓冲区,而不是string。所以你有C代码?这将帮助我们为您解答。 -
对不起,我无法理解“你有 C 代码吗?”。我从公司得到的是我通过解决方案资源管理器中的引用链接的实际 dll,我有他们的演示代码和他们的文档。他们的演示代码使用了 Visual C++ 6.0,我认为他们正在使用 MFC。
-
另外,当我使用他们的 dll 时,我必须将 Embed Interop 类型设置为 false,这样我才能真正使用类及其方法。
标签: c#