- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C_调用DLL方法_及_DLL与lib的区别
C++_调用DLL方法_及_DLL与lib的区别
C++ 调用.lib的方法:
#pragma comment (lib,ACParser.dll)
#pragma comment (lib,jitcrypt.dll)
#pragma comment (lib,jitenc.dll)
#pragma comment (lib,MiddleComponent.dll)
#pragma comment (lib,nsldap32v50.dll)
#pragma comment (lib,xerces-c_2_5_0.dll)
HINSTANCE hInst = LoadLibrary(LACParser.dll); // 加载DLL
if(hInst)
{
// 加载成功
// 定义待访问函数原型
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
// 获取函数地址
fun=(MYFUNC)GetProcAddress(hInst, SetLayeredWindowAttributes);
if(fun)
{
// 成功
fun(hWnd, RGB(0, 0, 0), 255, 2 | 1);
}
::AfxMessageBox(成功加载dll);
FreeLibrary(hInst); //释放 DLL
}
一: 隐式的加载时链接,有三种方法
1 LIB文件直接加入到工程文件列表中
在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中Add Files to Project菜单,在弹出的文件对话框中选中要加入DLL的LIB文件。然后在首先要使用该函数的地方加上该LIB的头文件,如#include ..\lib.h即可(没有头文件当然就不用了)。
2 设置工程的 Project Settings来加载DLL的LIB文件
打开工程的 Project Settings菜单,选中Link,然后在Object/library modules下的文本框中输入DLL的LIB文件,如you.lib(或者lib文件的路径,包括文件名)。然后在首先要使用该函数的地方加上该LIB的头文件,如#include ..\lib.h即可(没有头文件当然就不用了)。
3 通过程序代码的方式
加入预编译指令#pragma comment (lib,*.lib),这种方法优点是可以利用条件预编译指令链接不同版本的LIB文件。因为,在Debug方式下,产生的LIB文件是Debug版本,如Regd.lib;在Release方式下,产生的LIB文件是Release版本,如Regr.lib。然后在首先要使用该函数的地方加上该LIB的头文件,如#include ..\lib.h即可(没有头文件当然就不用了)。
当应用程序对DLL的LIB文件加载后,还需要把DLL对应的头文件(*.h)包含到其中,在这个头文件中给出了DLL中定义的函数原型,然后声明
二, 显式的运行时链接 ,(我用的是此方法)
隐式链接虽然实现较简单,但除了必须的*.dll文件外还需要DLL的*.h文件和*.lib文件,在那些只提供*.dll文件的场合就无法使用,而只能采用显式链接的方式。这种方式通过调用API函数来完成对DLL的加载与卸载,能更加有效地使用内存,在编写大型应用程序时往往采用此方式。这种方法编程具体实现步骤如下:
①使用Windows API函数Load Library或者MFC提供的AfxLoadLibrary将DLL模块映像到进程的内存空间,对DLL模块进行动态加载。
②使用GetProcAddress函数得到要调用DLL中的函数的指针。
③不用DLL时,用Free Library函数或者AfxFreeLibrary函数从进程的地址空间显式卸载DLL。
例:在应用程序中调用dll文件
——在应用程序中要首先装入dll后才能调用导出表中的函数,例如用mfc
创建基于对话框的工程test,并在对话框上放置load按钮,先添加装载代码。
1.首先在testdlg.cpp的首部添加变量设置代码:
//设置全局变量glibsample用于存储dll句柄
HINSTANCE glibsample=null; //如果定义成HANDLE类型,则出错
//第二个变量showme是指向dll
库中showme()函数的指针
typedef int(* Showme)(void);
Showme s
您可能关注的文档
- 8导出坐标.doc
- 8岁~12岁儿童气质问卷.doc
- 8年会计.doc
- 8心情○面对小人.doc
- 8年项目开发总结.doc
- 8月16日 深具磁性的人.doc
- 8月6日 寻求独特的经验.doc
- 8月9日 心理的支撑人物.doc
- 8月EVIL最新审核资料.txt1.doc
- 8种排序算法.doc
- springbooot+vue基于java的房屋维修系统毕业论文.doc
- 中国消防救援学院《单片机系统实验》2023-2024学年第一学期期末试卷.doc
- 2025年溧阳纺织化学品项目申请.pptx
- 景区门票包销合同模板(3篇).docx
- 【股票技术指标学习指南】第七章第三节货币需要量的测算.doc
- 2025春 _ 人教版七年级英语下册【unit4】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit5】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit6】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit7】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit8】看音标写单词.doc
最近下载
- 佳能 G1000 1500 1800 2000 2800 3000 3800 维修手册.pdf VIP
- 2025贵州七星关区洪山街道中心校(毕节四小)教师“跨校竞聘”工作笔试参考题库附答案解析.docx VIP
- 2025贵州毕节七星关区碧阳街道中心校(毕节二十二小)教师“跨校竞聘”34人笔试参考题库附答案解析.docx VIP
- 2025贵州毕节七星关区实验学校教师“跨校竞聘”60人笔试参考题库附答案解析.docx VIP
- 2025贵州毕节七星关区德溪街道中心校(毕节市七星关区第五实验学校)教师“跨校竞聘”24人笔试备考题库及答案解析.docx VIP
- 肾性贫血治疗现状及特征(罗沙司他).pptx VIP
- 哮喘慢阻肺重叠综合征.ppt VIP
- 王文娟首演版越剧《孟丽君》剧本.doc VIP
- 小学教研讲座专题:如何教语文.ppt VIP
- 某物流园区项目施工组织设计方案措施.pdf VIP
文档评论(0)