我知道我的问题似乎有些重复。但请相信我,我已经在这个网站上尝试了几个答案,到目前为止没有运气。所以如果有人能告诉我我在做什么有什么问题,我将非常感激。我将非常感谢一个明确的分步指南,并希望其他初学者能够处理DLL和WPF(我已经尝试过this和this以及this )。
以下是最简单形式的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;
}
}
好的,所以我将它放在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
函数时,会出现一个异常窗口,告诉您:
test1.exe中出现未处理的“System.BadImageFormatException”类型异常
其他信息:尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B)
现在我非常沮丧,不知道该怎么做:(