1

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

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

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

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

4

1 回答 1

1

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

于 2010-04-21T06:18:48.293 回答