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

仅在一个用户上发生调用非托管32位DLL异常';s计算机:BadImageFormatException(来自HRESULT:0x8007000B的异常),dll,unmanaged,32-bit,hresult,badimageformatexception,Dll,Unmanaged,32 Bit,Hresult,Badimageformatexception,我们的应用程序是C#.Net 4,它调用一个非托管的32位DLL。它一直运行良好,运行了许多机器(主要是64位Windows7)。但是,我最近遇到了一个特定的用户,在对非托管DLL进行调用时,程序会立即在其计算机上捕获BadImageFormatException BadImageFormatException:试图加载带有 格式不正确。(HRESULT的异常:0x8007000B) 我已经做了以下工作: 确保安装和文件正确无误 尽可能将他的.Net运行时更新与工作机器匹配 确保所有项目的平台目

我们的应用程序是C#.Net 4,它调用一个非托管的32位DLL。它一直运行良好,运行了许多机器(主要是64位Windows7)。但是,我最近遇到了一个特定的用户,在对非托管DLL进行调用时,程序会立即在其计算机上捕获BadImageFormatException

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

我已经做了以下工作:

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

  • 我快智穷了。有什么建议吗是否存在导致此类问题的特定.Net 4更新或热修复程序?

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

    该问题是由于各种系统DLL的32/64位不匹配造成的 VisualStudio要求的。不知怎的,它需要的DLL被替换了 无法加载的64位版本

    从正在工作的机器上更换下面提到的DLL 解决问题:

    c:\Windows\SysWOW64\msvcp100.dll c:\Windows\SysWOW64\msvcp100d.dll c:\Windows\SysWOW64\msvcr100.dll c:\Windows\SysWOW64\msvcr100\u clr0400.dll c:\Windows\SysWOW64\msvcr100d.dll