0

我们的应用程序是 C# .Net 4 并调用非托管 32 位 DLL。它运行良好并且可以运行许多机器(主要是 64 位 Windows 7)。但是,我最近遇到了一个特定用户,一旦调用非托管 DLL,程序就会在其计算机上捕获 BadImageFormatException。

BadImageFormatException:试图加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)

我做了以下事情:

  1. 确保安装和文件正确
  2. 尽可能将他的 .Net 运行时更新与工作机器匹配
  3. 确保所有项目的平台目标设置为 x86
  4. 运行调试版本,它可以工作

我快要完蛋了。有什么建议么?是否有特定的 .Net 4 更新或修补程序缺少导致此类问题的原因?

4

1 回答 1

0

问题原来是用户机器上的一些错位/无效的系统文件,在启动某些应用程序时可能表现为“应用程序无法正确启动(0xc000007b)。单击确定关闭应用程序”。

问题是由于 Visual Studio 所需的各种系统 dll 的 32/64 位不匹配造成的。不知何故,它需要的 dll 被它无法加载的 64 位版本所取代。

从正在运行的机器替换下面提到的 dll 可以解决问题:

c:\Windows\SysWOW64\msvcp100.dll c:\Windows\SysWOW64\msvcp100d.dll c:\Windows\SysWOW64\msvcr100.dll c:\Windows\SysWOW64\msvcr100_clr0400.dll c:\Windows\SysWOW64\msvcr100d.dll

http://social.msdn.microsoft.com/Forums/en-US/vssetup/thread/96035692-9a50-40d4-a7d3-48bda87d11ec

于 2013-01-18T01:01:04.027 回答