网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

VC中DLL的创建及调用方法分享

这篇文章主要讲解了“VC中DLL的创建及调用方法分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VC中DLL的创建及调用方法分享”吧!

10年积累的成都做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有玉溪免费网站建设让你可以放心的选择与我们合作。

方法一:

VC中DLL的创建及调用方法  

此中只有实际才操作,而无相关理论  

²             DLL的创建  

首先,用VC集成开发界面中的“新建”,新建一个项目。无论是VC6.0还是VC.NET,都有建立DLL项目的选项。只不过有些稍有不同,例如VC.NET中就有ISAPI   DLL,扩展存储过程DLL等,这些都不在讨论的范围。例如我们建立了一个用静态连接MFC库的DLL项目,名称为mydll  

然后,编辑mydll.cpp文件,在其中加入我们自己的函数void   go()。注意,不需要在mydll.h中声明它,而需要将函数头变成如下样子:  

extern   “c”   __declspec(dllexport)   void   go()      {     //code……     }

dllexport表示这个函数是由外部调用的。  

由于是否带参数,要影响到外部调用的方式,因此,我们再声明一个带参数的函数: 

extern   “c”   __declspec(dllexport)   void   went(CString   str)       {        //code……         }

OK,下面编译连接形成mydll.dll文件。  

²             DLL的调用  

好,下面我们就用VC写个程序调用它。在调用的函数中,首先要获得DLL的句柄,有如下语句:  

HINSTANCE           dllinstance;     dllinstance=::LoadLibrary(strDllUrl);     if(dllinstance==NULL)   AfxMessageBox("can't   open   dll   file");

其中strDllUrl是mydll.dll路径的字符串,这样程序才能找到它。::LoadLibrary获得参数标识的DLL文件的句柄。  

获得句柄后,下面要获得函数地址以便执行它。有如下语句:  

FARPROC     proc;     proc=GetProcAddress(dllinstance,"go");      if(proc==NULL)   AfxMessageBox("can't   find   function");     else   proc();

FARPROC是一个远程过程指针,通过GetProcAddress获得函数的地址。它的两个参数就是dll文件句柄和函数的名字了。  

然后FARPROC就可以和go一样的使用了,它就是go   ,go   就是它。  

而对于带参数的DLL中的函数,调用方法有所不同。因为对函数的调用是通过对它地址的引用进行的,这样,传入参数对不对,在函数调用程序的编译和联接过程中,无法知道其正确性。因此,要在调用程序中对DLL中带参数的函数做个声明,如mydll中的went,我们要做个声明如下:  

typedef   void   (FAR   __cdecl   *MYWENT)(CString);

然后以类型MYWENT声明变量既可调用,如下:  

MYWENT   myproc;     myproc   =(MYWENT)GetProcAddress(dllinstance,"go");     if(myproc   ==NULL)   AfxMessageBox("can't   find   function");     else   myproc   (“o-----yeah---------”);

注意声明的时候呢,由于DLL中WENT的定义为C语言调用规范,因此MYWENT前一定要用__cdecl,而VC中常用的__stdcall是PASCAL调用规范,不可以的。一定要注意。  

方法二:

VC中DLL的创建及调用方法 

New->MfcWiazard.dll   一路下去,就会生成一个了(略)。

感谢各位的阅读,以上就是“VC中DLL的创建及调用方法分享”的内容了,经过本文的学习后,相信大家对VC中DLL的创建及调用方法分享这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


新闻名称:VC中DLL的创建及调用方法分享
分享地址:http://bjjierui.cn/article/jiisps.html

其他资讯