1.拷贝dll到工程运行目录下。
2.引用:
#using \"..\\debug\\CTest.dll\"
using namespace CTest;
如果 程序中引用了 其他.net组建的程序集,根据提示进行引用。例如缺少:程序集“System.Windows.Forms 则添加 #using <System.Windows.Forms.dll>
3.项目属性,修改“公共语言运行时支持”为 "/clr".
4.托管对象使用:
ClassName ^p = gcnew ClassName();
p->Fun(); // 调用dll的函数
//delete p;
通过gcnew来实例化,无需使用delete来释放内存,gcnew出来的内存由
虚拟机托管,程序结束后,会自动销毁。
5.如果dll提供的接口,需要注册回调。则语法和c#注册回调语法一样
如:
c#里回调函数定义如下 :
namespace CTest
{
public class ClassName : UserControl
{
public ClassName();
public event ClassName.DataReceive myDataReceive;
public delegate void DataReceive(int iDoor, string sOPtag);
}
}
则回调设置方法:
p->myDataReceive += gcnew ClassName::DataReceive(GetAccessMsg);
GetAccessMsg 定义如下:
- void GetAccessMsg(int iDoor, System::String^ sOPtag))
- {
- // 把 System::String^ 类型转换成 char*
- IntPtr sptr = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(sOPtag);
- char* pMsg = (char*)sptr.ToPointer(); cout<<iDoor<<endl; }
转自:http://blog.csdn.net/chao360559040/article/details/7570307