C调用DLL的详细步骤.pdf

C调用DLL的详细步骤.pdf

ID:48054162

大小:74.88 KB

页数:2页

时间:2019-10-07

C调用DLL的详细步骤.pdf_第1页
C调用DLL的详细步骤.pdf_第2页
资源描述:

《C调用DLL的详细步骤.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、中国传媒大学计算机学院银国徽在C#中调用dll的方法第一步:在命名空间之外要添加声明对一个重要类库的使用。usingSystem.Runtime.InteropServices;第二步:使用DllImport关键字声明调用DLL文件中的函数。此处的声明调用该DLL函数的类开头部分。例:publicclassXXXX{[DllImport(“MyDLL.dll")]publicstaticexternintmySum(inta,intb);}注释:代码中DllImport关键字作用是告诉编译器入口点在哪里,并将打包函数捆绑在这个类中在调用的时候在类中的时候直接mySum(a,b

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

3、PI)SetLastError指示被调用方在从属性化方法返回之前是否调用SetLastErrorWin32API函数(C#中默认false)API函数的参数传递注释:参数传递分为值传递和引用传递。可以把引用传递理解为C++中的指针传递。(1)整形类型1、int类型[DllImport(“MyDLL.dll")]//返回个int类型publicstaticexternintmySum(inta1,intb1);//DLL中申明extern“C”__declspec(dllexport)intWINAPImySum(inta2,intb2){//a2b2不能改变a1b1//a2=

4、..//b2=...returna+b;}//参数传递int类型publicstaticexternintmySum(refinta1,refintb1);//DLL中申明extern“C”__declspec(dllexport)intWINAPImySum(int*a2,int*b2){//可以改变a1,b1*a2=...*b2=...returna+b;}(2)字符类型注释:字符类型分为参数的传入和传出。DLL需传入char*类型[DllImport(“MyDLL.dll")]//传入值publicstaticexternintmySum(stringastr1,str

5、ingbstr1);//DLL中申明extern“C”__declspec(dllexport)intWINAPImySum(char*astr2,char*bstr2){//改变astr2bstr2,astr1bstr1不会被改变中国传媒大学计算机学院银国徽returna+b;}DLL需传出char*类型[DllImport(“MyDLL.dll")]//传出值publicstaticexternintmySum(StringBuilderabuf,StringBuilderbbuf);//DLL中申明extern“C”__declspec(dllexport)intWIN

6、APImySum(char*astr,char*bstr){//传出char*改变astrbstr-->abuf,bbuf可以被改变returna+b;}(3)传递结构参数DLL传递结构(见代码)BOOLPtInRect(constRECT*lprc,POINTpt);usingSystem.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential)]publicstructPoint{publicintx;publicinty;}[StructLayout(LayoutKind.Explicit)]publics

7、tructRect{[FieldOffset(0)]publicintleft;[FieldOffset(4)]publicinttop;[FieldOffset(8)]publicintright;[FieldOffset(12)]publicintbottom;}ClassXXXX{[DllImport("User32.dll")]publicstaticexternboolPtInRect(refRectr,Pointp);}在此原型中,我们用“ref”指明将传递结构指针而不是结构值。这是处理通过

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

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

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