C#呼叫VC dll 出現“System.BadImageFormatException”
阿新 • • 發佈:2019-01-04
namespace Hello_seesharp
{
class Program
{
[DllImport("Read-WriteString.dll", EntryPoint = "Add",
ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Add(int a, int b);
static void Main(string[] args)
{
int c = Add(3, 2);
Console.WriteLine("hello,world");
Console.Write(c);
Console.Read();
}
}
{
class Program
{
[DllImport("Read-WriteString.dll", EntryPoint = "Add",
ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Add(int a, int b);
static void Main(string[] args)
{
int c = Add(3, 2);
Console.WriteLine("hello,world");
Console.Write(c);
Console.Read();
}
}
}
在除錯程式時,出現如下錯誤,(前提Read-WriteString.dll已放到bin目錄下面)。
“System.BadImageFormatException”型別的未經處理的異常出現在 Hello-seesharp.exe 中。
其他資訊: 試圖載入格式不正確的程式。 (異常來自 HRESULT:0x8007000B)
經檢查發現,原來編寫vc dll時用的是x86平臺,即32位
而編譯C#時用的x64, 即64位
我們可以將C#切換到x86平臺編譯,編譯通過。