调试生成TestDll.dll,然后新建一个C++的Win32控制台项目,直接生成解决方案,然后将C#生成的 TestDll.dll 放到C++项目目录中,并使用#using引用C#编写的DLL文件,使用using使用C#中你要使用的类所在的命名空间,然后使用C#中的类名生成一个对象并调用你要使用的函数,如下代码所示。
在编译之前应该右键项目名称->属性->配置属性->常规
将公共语言运行时支持从无公共语言运行时支持设置成公共语言运行时支持(/clr).
C++/CLI中使用gcnew关键字表示在托管堆上分配内存,并且为了与以前的指针区分,用^来替换* ,就语义上来说他们的区别大致如下:
1. gcnew返回的是一个句柄(Handle),而new返回的是实际的内存地址.
2. gcnew创建的对象由虚拟机托管,而new创建的对象必须自己来管理和释放.
#include "stdafx.h"
#include<windows.h>
#using "../Debug/TestDll.dll"
using namespace TestDll;
int _tmain(int argc, _TCHAR* argv[])
{
int sum,x,y;
x = 10;
y = 20;
Class1 ^a = gcnew Class1();
sum = a->demoAdd(x ,y);
printf("%d+%d=%d\n",x,y,sum);
system("pause");
return 0;
}