调用仅在一个用户的计算机上发生的非托管32位DLL异常:BadImageFormatException(HRESULT异常:0x8007000B)

时间:2013-01-12 03:31:03

标签: dll unmanaged 32-bit hresult badimageformatexception

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

  

BadImageFormatException:尝试加载带有的程序   格式不正确。 (HRESULT异常:0x8007000B)

我做了以下事情:

  1. 确保安装和文件正确
  2. 使他的.Net运行时更新尽可能接近工作机器
  3. 确保所有项目的平台目标设置为x86
  4. 运行调试版本,可以使用
  5. 我快要结束了我的智慧。有什么建议? 是否存在导致此类问题的特定.Net 4更新或修补程序?

    谢谢

1 个答案:

答案 0 :(得分:0)

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

  

问题是由于各种系统dll的32/64位不匹配造成的   Visual Studio要求。不知何故,它需要的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