加载本机dll时抛出ExecutionEngineException

时间:2010-04-16 09:00:29

标签: c# .net interop native executionengineexception

我有一个使用本机32位DLL的32位.net应用程序 通过DllImport()。本机DLL是我们的内部文件分析库,如果人们更新它(其他软件使用它),我需要使用它将它移植到C#会有问题。

问题是,当我尝试在本机DLL中执行任何方法时,我会抛出 System.ExecutionEngineException 。事实上,我已经将托管应用程序简化为一个只调用本机方法的简单测试程序,但它仍然失败。

我使用的是64位Windows 7,但这并不重要,因为我将所有内容编译为32位二进制文​​件。

有趣的是,当我查看Dependency Walker中的本机DLL时,它显示它无法找到msvcr90.dll - 但是当我在Dependency Walker中打开任何其他本机DLL时,它可以找到他们引用的msvcr90.dll就好了。在本地DLL的编译中是否有一些错误会弄乱它的DLL引用?

1 个答案:

答案 0 :(得分:1)

好的 - 问题有点迷雾。显然,同事修改了本机DLL的方法,以包含一个具有默认值的参数(C ++处理得很好),但是,正如我们所知, C#3.5不。在为该参数提供值后,一切正常!