我有一个 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 引用?