C#代码:

public delegate void Function();//委托类型
public static class DllCall
{
        // 供C++调用的C#函数
	public static void CppCall()
	{
		Console.WriteLine("CPPCALL");
	}

        //导入C++ dll
        //初始化函数
	[DllImport("CPP.dll")]
	public extern static void SetFunc(Function f);

        //C#调用C++函数
	[DllImport("CPP.dll")]
	public extern static void CallFunc();
}

C++代码:

typedef void(*Function)();//函数类型
Function func;//C#函数地址

//初始化C#函数地址
extern "C" _declspec(dllexport) void SetFunc(Function f) {
	func = f;
}

//调用C#函数
extern "C" _declspec(dllexport) void CallFunc() {
	func();
}

在编译C#程序的时候需要选择与C++相同的编译平台,C#不能选择 Any CPU平台编译。

Categories: 计算机

0 Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注