因为需要用到混合编程,就找了一些资料,根据这些大牛们的记载,自己也学到了很多。
1、首先生成一个DLL类库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassLibrary1
{
public class Class1
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = "Your Name: " + value;
}
}
}
}
生成DLL库还是比较简单的,以上完成之后直接进入到第二步。2、然后新建一个C++控制台应用程序:
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#using "C:\Users\Administrator\Desktop\C+++++\ClassLibrary1\ClassLibrary1\bin\Debug\ClassLibrary1.dll"
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
using namespace ClassLibrary1;
int _tmain(int argc, _TCHAR* argv[])
{
Class1 ^c = gcnew Class1();
c->Name = "zzj";
printf("%s\n",c->Name);
//cout<<c->Name<<endl;
return 0;
}
这些完成之后就是调用DLL。看着比较简单吧,这还没有结束,还是要注意细节的使用。
3、
在“属性”->“配置属性”->“常规”->“公共语言运行库支持”中选取“公共语言运行库支持(/clr)”。
再修改下,“属性”->“配置属性”->“C/C++”->“代码生成”->“运行时库”中选取“多线程 DLL (/MD)”。
然后就是“右键”---“引用”---“添加引用”---“浏览”---将DLL库浏览添加进去。
之后就是将DLL文件拷贝到当前使用文件的debug文件夹中。
到这里才算是结束呢。
4、需要注意:
在使用DLL中的类时,//注意一定要用 ^ 定义对象 , 一定要用gcnew 申请新建。
C#编写的类库中的类文件没有什么特殊的要求,但是在定义C++类 自身的C++类要用 ref class 定义。
使用总结:
1)用C#写任何的类库
2)C++ 中要引用此类库
3)创建C#对象时要用gcnew ;
4) C++ 编译设置一定设置为:支持公共语言运行时支持(/clr)
4) 自身的C++类要用 ref class 定义。