C#调用C++的dll方法
有时候用一些硬件厂家的库函数,厂家没有支持C#的,就只有C、C++语言,这个时候只能将C、C++编译成dll文件,然后用C#来调用这些接口。
下面使用环境为vs2010,win32,x86
C++打包成为dll
首先创建一个win32的C++项目
然后点击向导中的dll
然后在这个文件中编写dll的函数
举例如下
#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文件就做好了
C#调用dll
先进入C#项目中的Debug文件夹中,将dll直接放入
接下来在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文件名和函数名称,后面一个用于内存对齐