正在WPF应用程序中加载非托管DLL
Loading unmanaged DLLs in WPF applications
我知道我的问题可能看起来有重复。但相信我,我已经尝试了这个网站上提出的几个答案,但到目前为止运气不佳。因此,如果有人能告诉我我所做的事情出了什么问题,我将不胜感激。一个清晰而循序渐进的指南会受到我的赞赏,希望其他在处理DLL和WPF方面是初学者的人(我已经尝试过这个和这个)。
这里有一个最简单形式的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文件放入文件夹test1binDebug
中。但每当我尝试使用add
函数时,就会出现一个异常窗口,告诉我:
test1.exe 中发生类型为"System.BadImageFormatException"的未处理异常
附加信息:试图加载格式不正确的程序。(HRESULT异常:0x8007000B)
现在我真的很沮丧,不知道该怎么办:(
问题很可能是C++和C#应用程序的构建设置不一致。
试着检查这个,这个和这个答案。希望这会有所帮助。
相关文章:
- 从 wxWidgets 中的.DLL加载图标
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 无法使用c++/cli包装从c#dll加载函数
- 混合延迟 dll 加载和手动调用 LoadLibraryA 是否安全?
- 无法从 dll 加载函数
- 如何设置我的dll加载,该dll取决于Env-ailiable的某些第三部分DLL
- 将本机非托管的C DLL加载到托管的C#应用中,导致DLL输出垃圾
- 无法在 Python 3.5 上导入 cv2 DLL 加载失败
- 当使用“空dllmain”的dll加载链接到DLL时,应用程序无法启动(0xc0000142)
- 如何从DLL加载的DLL链接到函数
- 如何从Java中的C DLL加载和使用结构和功能
- 我可以用具有相同功能名称的多个DLL加载元素吗?
- 窗口挂钩和 dll 加载
- CEGUI-从DLL加载资源
- 什么可能导致时间函数和 DLL 加载之间死锁
- 以下代码是如何工作的(从DLL加载动态类)
- 错误:Visual Studio中没有为opencv_world310.dll加载符号
- 使用 LoadLibraryA 的 dll 加载错误
- 从 WinAPI C 项目中的专用 DLL 加载图像资源
- 模块"MyShellExt.dll"加载失败