在64位Windows 7上运行一个P/Invoke程序出现BadImageFormatException错误,错误代码是:0x8007000B
具体错误信息如下:
BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
错误原因:
当一个64位的程序试图使用一个32位的DLL时,就会发生错误代码为0x8007000B的BadImageFormatException错误。
我们看一下DLL和P/Invoke程序的编译选项就知道了:
以上,CallDLL就是我们的P/Invoke程序,而SampleDLL就是我们要调用的DLL。
解决方法:
要么我们让这两个程序都以x86来编译:
要么我们让这两个程序都以x64来编译:
这样,就不再出现BadImageFormatException错误了。