欢迎来到天天文库
浏览记录
ID:38653216
大小:518.50 KB
页数:5页
时间:2019-06-17
《点NET中DLL简单生产以及使用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.NET生成与调用DLL文件DLL文件的作用,代码不兼容的情况下调用DLL减少工作量,这是我这个菜鸟的体会。我用.C文件生成一个DLL文件,用C#调用它。使用.net平台,添加(新建或者)一个项目如图:确定后如图:完成后,在解决方案中:在这个项目中的源文件中添加现有项(如果没代码自己写的话:添加新建项),代码都要加上:#include,以及BOOLAPIENTRYDllMain函数(格式固定)。其他编程格式和C一样,如果需要头文件,添加头文件。添加DLL文件的函数名加上前缀如:void__declspec(dllexport)__cdeclroundsqurat
2、(floatR,float*outls)这是我的DLL文件的代码,最终调用roundsqurat函数。#include#include#include#includeBOOLAPIENTRYDllMain(HINSTANCEhInst/*Libraryinstancehandle.*/,DWORDreason/*Reasonthisfunctionisbeingcalled.*/,LPVOIDreserved/*Notused.*/){switch(reason){caseDLL_PROCESS_ATTACH
3、:break;caseDLL_PROCESS_DETACH:break;caseDLL_THREAD_ATTACH:break;caseDLL_THREAD_DETACH:break;}/*ReturnsTRUEonsuccess,FALSEonfailure*/returnTRUE;}void__declspec(dllexport)__cdeclroundsqurat(floatR,float*outls){floatpi=3.14159;outls[0]=2*pi*R;}写完代码后,生产解决方案,在该工程目录下就出现了一个DLL文件,将这个DLL文件复制到我们应用工程的根目录下
4、,(..项目binDebug,改文件有执行文件)。调用动态链接库时,先要调用命名空间:usingSystem.Runtime.InteropServices;然后声明API函数:其中“"suanfadll.dll"”问动态链接库,roundsqurat是动态链接库的函数(及入口),jfklsa是动态链接库roundsqurat别名,在这个工程中调用jfklsa就可以了[DllImport("suanfadll.dll",EntryPoint="roundsqurat")]publicstaticexternintjfklsa(floatR,reffloatoutls);这样使用
5、后就可以用了,如果要调试DLL部分,需要将其工程设为启动项,并且他的属性中也要改变:(其中命令是执行文件,工作目录就是DLL文件和执行文件的位置),调试器类型改为“仅限本机”就可以了。这样在调试过程中:就能跳到DLL文件的代码中了。当然他不是跳到了DLL文件里,而是我们添加了这个DLL文件的工程,我们有这个DLL文件的源代码,他是跳到我们的.C文件中的。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSyst
6、em.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.InteropServices;//usingSystem.Runtime.InteropServices;namespacedlluse{publicpartialclassForm1:Form{[DllImport("suanfadll.dll",EntryPoint="roundsqurat")]publicstaticexternintjfklsa(floatR,reffloatoutls);publicForm1(){Initiali
7、zeComponent();}//一个按键的事件,将得到的圆半径周长输出到text。Text中privatevoidbutton1_Click(objectsender,EventArgse){floatx=0;jfklsa(2,refx);textBox1.Text=x.ToString()+",";}}}
此文档下载收益归作者所有