欢迎来到天天文库
浏览记录
ID:14789907
大小:98.00 KB
页数:10页
时间:2018-07-30
《c#调c++的dll的函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C#调C++的dll的函数C++structHHFC_SET{char* UID;int code;};extern"C"__declspec(dllexport)int PReadUID(HHFC_SET*mystruct,char*lpKeyNo,LPTSTRlpKeyNo2){//inta=5;CStringds="sea中国";//wchar_ta[]=L"sea";//lpKeyNo=(LPTSTR)(LPCTSTR)a;//lpKeyNo=L'中国a';strcpy(lpKeyNo,"中国aabbbcccc");wcscpy(lpKeyNo2,L"中国aabbbc
2、ccc");//lpKeyNo[0]=L'a';//lpKeyNo[1]=L'b';//lpKeyNo[2]=L'c';//lpKeyNo[3]=L' ';//::MessageBox(NULL,lpKeyNo,L"info",MB_OK);// mystruct->UID=ds.GetBuffer(ds.GetLength()+1);mystruct->UID="seaaa中国";return5;}C#usingSystem;usingSystem.Runtime.InteropServices;usingSystem.Text;namespacePInvoke{///
3、ummary>///Ivoke的摘要说明。//////publicclassIvoke{[DllImport("standerMFC.dll",EntryPoint="PReadUID",CharSet=CharSet.Ansi)]//nPort:1代表COM1,返回-1代表已经打开COMPORT失败,0代表COM已经打开,返回其它值表示打开对应的COMpublicstaticexternintPReadUID(refHHFC_SETstru,[MarshalAs(UnmanagedType.LPStr)]StringBuildersb,[MarshalAs
4、(UnmanagedType.LPWStr)]StringBuildersb2);}[StructLayout(LayoutKind.Sequential)]publicstructHHFC_SET{[MarshalAs(UnmanagedType.LPStr)]publicStringUid;[MarshalAs(UnmanagedType.I4)]publicintcode;}}namespacePInvoke{//////Class1的摘要说明。///classClass1{//////应用程序的主入口点。///
5、summary>[STAThread]staticvoidMain(string[]args){////TODO:在此处添加代码以启动应用程序//HHFC_SETstru=newHHFC_SET();stru.Uid="";Console.WriteLine(stru.Uid);StringBuildersb=newStringBuilder(80);StringBuildersb2=newStringBuilder(80);inta=Ivoke.PReadUID(refstru,sb,sb2);//Ivoke.GetUsbkeyNo();Console.WriteLine(s
6、tru.Uid);Console.Read();}}}注意:char* 用 UnmanagedType.LPStrwchar_t*用 UnmanagedType.LPWStrC#中调用非托管的DLL及参数传递本篇文章来源于:开发学院http://edu.codepub.com 原文链接:http://edu.codepub.com/2010/0531/23111.php微软的.NET框架的优点之一是它提供了独立于语言的开发平台。你可以在VB、C++、C#等语言中编写一些类,而在其它语言中使用(源于.NET中使用了CLS),你甚至可以从另一种语言编写的类中继承。但是你要是想调用以
7、前的非托管DLL,微软的.NET框架的优点之一是它提供了独立于语言的开发平台。你可以在VB、C++、C#等语言中编写一些类,而在其它语言中使用(源于.NET中使用了CLS),你甚至可以从另一种语言编写的类中继承。但是你要是想调用以前的非托管DLL,那又会怎么样呢?你必须以某种方式将.NET对象转换为结构体、char*、函数指针等类型。这也就是说,你的参数必须被marshal(注:不知道中文名称该叫什么,英文中指的是为了某个目的而组织人或事物,参见这里,此处指的是为了调用非托管函数而进行的参数
此文档下载收益归作者所有