2016-04-30 69 views
2

我知道我的問題看起來可能重複。但相信我,我已經嘗試了幾個在這個網站上提出的答案,迄今爲止沒有運氣。所以,如果有人能告訴我我正在做什麼是錯的,我將非常感激。一個清晰和一步一步的指導,將被我大加讚賞,並希望其他的誰是在處理DLL和WPF(我已經嘗試thisthisthis)初學者。在WPF應用程序中加載非託管DLL

這裏是最簡單形式的C++代碼:

#include <stdio.h> 
#pragma unmanaged 

extern "C" 
{ 
    __declspec(dllexport) int add(int a,int b) 
    { 
     return a+b; 
    } 
    __declspec(dllexport) int subtract(int a,int b) 
    { 
     return a-b; 
    } 
} 

OK,所以我在Visual C++ 2013和構建它把這個DLL中的項目。這是成功的,並給我一個名爲OurDLL.dll的文件。

現在,我創建了一個新的C#WPF應用程序,編寫最簡單的方法可能並添加以下行到文件MainWindow.xaml.cs

/// some using statements 

using System.Runtime.InteropServices; 
namespace test1 
{ 
    public partial class MainWindow : Window 
    { 
     [DllImport("OurDll.dll", CallingConvention = CallingConvention.Cdecl)] 
     public static extern int add(int a, int b); 

     /// the rest of the code 

代碼編譯併成功生成。我已將DLL文件放入文件夾test1\bin\Debug。但每當我嘗試使用add功能,異常窗口出現講述這件事:

型「System.BadImageFormatException」未處理的異常發生在test1.exe

附加信息:嘗試到做加載格式不正確的程序。 (異常來自HRESULT:0x8007000B)

現在我真的很沮喪,不知道該怎麼做:(

+0

是Windows平臺的32或64位。你建立非託管的DLL的32位或64位? –

+0

這32位@RichardCritten –

回答

2

最有可能的問題是你的C++和C#應用程序的構建設置的差異

嘗試檢查thisthisthis答案。希望這將有助於。

+1

謝謝。顯然,當我把DLL文件的完整路徑,即'DllImport(@「C:\ path-to-file \ OurDll.dll」......「這個問題魔法般地修復了! –

相關問題