C++文集板块有一节《C++ 如何生成一个DLL动态链接库》已经讲述了,C++如何生成一个动态链接库CPPDLLDemo.dll,本节将讲述如何用C#来调用该CPPDLLDemo.dll.
1、为简单起见直接创建C# 控制台程序来调用该dll.
创建控制台程序
2、首先用DllImport的方式添加需要调用dll中的方法,所以需要事先知道dll中的方法与参数。
添加using:
using System.Runtime.InteropServices;
在类下一级添加调用dll的方法与参数:
//调用C++的dll,即非托管dll的加法
[DllImport("CPPDLLDemo.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
extern static int add(ref int a,ref int b);//注意C++函数原型为指针*x.*y的参数,这里需用ref,如果是返回值是指针就不需要
//调用C++的dll中的减法
[DllImport("CPPDLLDemo.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
extern static int sub(int a, int b);
3、在main中声明参数并调用方法
static void Main(string[] args)
{
int a = 222;
int b = 111;
int resultAdd = add(ref a,ref b);
int resultSub = sub(a,b);
Console.WriteLine(a.ToString() + "+" + b.ToString() + "=" + resultAdd.ToString());
Console.WriteLine(a.ToString() + "-" + b.ToString() + "=" + resultSub.ToString());
Console.Read();
}
4、运行得出结果:(注意要把C++的dll拷贝到该程序的根目录下)
运行结果
网友评论