我知道我的問題看起來可能重複。但相信我,我已經嘗試了幾個在這個網站上提出的答案,迄今爲止沒有運氣。所以,如果有人能告訴我我正在做什麼是錯的,我將非常感激。一個清晰和一步一步的指導,將被我大加讚賞,並希望其他的誰是在處理DLL和WPF(我已經嘗試this和this和this)初學者。在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)
現在我真的很沮喪,不知道該怎麼做:(
是Windows平臺的32或64位。你建立非託管的DLL的32位或64位? –
這32位@RichardCritten –