1. 程式人生 > >C#呼叫VC dll 出現“System.BadImageFormatException”

C#呼叫VC dll 出現“System.BadImageFormatException”

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();
            
        }
    }

}

在除錯程式時,出現如下錯誤,(前提Read-WriteString.dll已放到bin目錄下面)。

“System.BadImageFormatException”型別的未經處理的異常出現在 Hello-seesharp.exe 中。

其他資訊: 試圖載入格式不正確的程式。 (異常來自 HRESULT:0x8007000B)

經檢查發現,原來編寫vc dll時用的是x86平臺,即32位

而編譯C#時用的x64, 即64位

我們可以將C#切換到x86平臺編譯,編譯通過。