AndreaDO

导航

C#调用C++的dll方法

C#调用C++的dll方法

有时候用一些硬件厂家的库函数,厂家没有支持C#的,就只有C、C++语言,这个时候只能将C、C++编译成dll文件,然后用C#来调用这些接口。
下面使用环境为vs2010,win32,x86

C++打包成为dll

首先创建一个win32的C++项目
image

然后点击向导中的dll
image

然后在这个文件中编写dll的函数
image

举例如下

#include "stdafx.h"
#include <iostream>
using namespace std;
//必须写上extern "C" __declspec(dllexport) 
//后面函数定义按照正常来写
extern "C" __declspec(dllexport) void Hello() 
{
	cout<<"你好"<<endl;
}

然后点击上面绿色按钮或者F5运行编译,无法运行不要紧,进入项目的文件夹的Debug文件夹中,找到.dll后缀名的文件,这样C++的dll文件就做好了
image

image

C#调用dll

先进入C#项目中的Debug文件夹中,将dll直接放入
image

接下来在C#的项目中创建一个cs文件,用于调用dll的接口
例子如下:

using System.Runtime.InteropServices; // 用 DllImport 需用此 命名空间
using System.Reflection; // 使用 Assembly 类需用此 命名空间
using System.Reflection.Emit; // 使用 ILGenerator 需用此 命名空间
 [DllImport("CPPDLL.dll", EntryPoint = "Hello", CallingConvention = CallingConvention.Cdecl)]
        public static extern void Hello();

c#的接口函数必须和C++一致,然后函数必须是public static类型
函数的上面必须写上你调用的dll文件名和函数名称,后面一个用于内存对齐

posted on 2024-07-26 17:29  AndreaDO  阅读(63)  评论(0编辑  收藏  举报