c#调c++的dll的函数

c#调c++的dll的函数

ID:14789907

大小:98.00 KB

页数:10页

时间:2018-07-30

c#调c++的dll的函数_第1页
c#调c++的dll的函数_第2页
c#调c++的dll的函数_第3页
c#调c++的dll的函数_第4页
c#调c++的dll的函数_第5页
资源描述:

《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(注:不知道中文名称该叫什么,英文中指的是为了某个目的而组织人或事物,参见这里,此处指的是为了调用非托管函数而进行的参数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。