我用調用C++的Dll到C#工作,遇到了一個問題BadImageFormatException
C++函數:
int _declspec(dllexport) CompressPacket(unsigned char *buff, int offset, int len);
C#函數:
[DllImport("HuffCompress.dll")]
private static extern unsafe int HuffCompress(ref byte[] buff, int offset, int len);
...
private unsafe byte[] CompressPacket(byte[] packet)
{
int len = HuffCompress(ref packet, 12, packet.Length-12);
byte[] compressed = new byte[len];
for (int i = 0; i < len; i++)
compressed[i] = packet[i];
return compressed;
}
當
int len = HuffCompress(ref packet, 12, packet.Length-12);
運行時,我得到一個BadImageFormatException
由於C#編輯器的VSC#速成,它不編譯64個程序,所以我不能確定的問題 任何想法將是巨大的
在我看來,有一個命名不匹配。您的C++導出稱爲CompressPacket,而您的C#導入稱爲HuffCompress。 – 2011-04-20 22:06:51
正如大衛說的那樣,這是典型的例外,當代碼正在等待一個32位(或64位)的DLL,並且你給它一個錯誤的位數時 – 2011-04-20 23:11:40