C#里调用DLL的方法

C#里调用DLL的方法

ID:40525506

大小:34.00 KB

页数:6页

时间:2019-08-04

C#里调用DLL的方法_第1页
C#里调用DLL的方法_第2页
C#里调用DLL的方法_第3页
C#里调用DLL的方法_第4页
C#里调用DLL的方法_第5页
资源描述:

《C#里调用DLL的方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、为了能用上原来的C++代码,只好研究下从C#中调用DLL首先必须要有一个声明,使用的是DllImport关键字:包含DllImport所在的名字空间usingSystem.Runtime.InteropServices;publicclassXXXX{[DllImport(“MyDLL.dll")]publicstaticexternintmySum(inta,intb);}[DllImport(“MyDLL.dll")]publicstaticexternintmySum(inta,intb);代码中DllImport关键字作用是告诉编译器入口点在哪里,并将打包函数捆绑在这个类

2、中在调用的时候在类中的时候直接  mySum(a,b);就可以了在其他类中调用:XXXX.mySum(a,b);[DllImport(“MyDLL.dll”)]在申明的时候还可以添加几个属性[DllImport(“MyDLL.dll",EntryPoint="mySum",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]EntryPoint:指定要调用的DLL入口点。默认入口点名称是托管方法的名称。CharSet:控制名称重整和封送String参数的方式(默认是UNICODE)CallingCon

3、vention指示入口点的函数调用约定(默认WINAPI)(上次报告讲过的)SetLastError指示被调用方在从属性化方法返回之前是否调用SetLastErrorWin32API函数(C#中默认false)int类型[DllImport(“MyDLL.dll")]//返回个int类型publicstaticexternintmySum(inta1,intb1);//DLL中申明extern“C”__declspec(dllexport) intWINAPImySum(inta2,intb2){//a2b2不能改变a1b1//a2=..//b2=...returna+b;}//

4、参数传递int类型publicstaticexternintmySum(refinta1,refintb1);//DLL中申明extern“C”__declspec(dllexport) intWINAPImySum(int*a2,int*b2){//可以改变a1,b1*a2=...*b2=...returna+b;}DLL需传入char*类型[DllImport(“MyDLL.dll")]//传入值publicstaticexternintmySum(string astr1,stringbstr1);//DLL中申明extern“C”__declspec(dllexport)

5、 intWINAPImySum(char*astr2,char*bstr2){//改变astr2bstr2 ,astr1bstr1不会被改变returna+b;}DLL需传出char*类型[DllImport(“MyDLL.dll")]//传出值publicstaticexternintmySum(StringBuilderabuf,StringBuilderbbuf);//DLL中申明extern“C”__declspec(dllexport) intWINAPImySum(char*astr,char*bstr){//传出char* 改变astr bstr-->abuf,bb

6、uf可以被改变returna+b;}DLL回调函数BOOLEnumWindows(WNDENUMPROClpEnumFunc,LPARAMlParam)usingSystem;usingSystem.Runtime.InteropServices;publicdelegateboolCallBack(inthwnd,intlParam);//定义委托函数类型publicclassEnumReportApp{[DllImport("user32")]publicstaticexternintEnumWindows(CallBackx,inty);publicstaticvoidMa

7、in(){CallBackmyCallBack=newCallBack(EnumReportApp.Report);EnumWindows(myCallBack,0);}publicstaticboolReport(inthwnd,intlParam){Console.Write("Windowhandleis");Console.WriteLine(hwnd);returntrue;}}DLL 传递结构  (见代码)BOOLPtInRect(constRECT*lprc,POI

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

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

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