编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 调用动态链接库
  · 调用动态链接库

用户:  大麦
发帖:  430 篇
作品:  0 个
回复:  108 篇
技术分:  1156 分
等级:  
注册:  2010-05-11 09:09:40



发表于:2010-07-13 15:51:13
          楼主

调用动态链接库
动态链接库可以有两种加载方式,分别为静态加载和动态加载。下面以动态加载为例来介绍动态链接库函数的调用。
例如,调用动态链接库
(1)创建一个基础对话框的工程。工程名称为“InvokeDll”。
(2)定义一个函数指针类型,其定义与动态链接库中的函数原型相同。
typedef void  (__stdcall * funShowInfo)(char* pchData);
 注意:动态链接库中函数的调用约定通常为__stdcall。为了能够利用函数指针调用动态链接库中的函数。我们在定义函数指针类型时,也要指定__stdcall调用约定。
(3)处理按钮的单击事件,加载动态链接库。
void CInvokeDllDlg::OnOK()
{
 HMODULE hMod = LoadLibrary("ShowDlg.dll");     //加载动态链接库
 if (hMod != NULL)           //判断加载是否成功
 {
  funShowInfo ShowInfo;         //定义函数指针
  ShowInfo = (funShowInfo)GetProcAddress(hMod,"ShowDialog"); //获取动态链接库中的函数
  if (ShowInfo)           //判断函数指针是否为空
   ShowInfo("编程词典");        //调用动态链接库中的hanshu
 }
 FreeLibrary(hMod);           //卸载动态链接库
}
(4)运行程序,效果如图1所示。
 
图1  对话框
动态加载动态链接库是通过使用LoadLibray函数实现的。下面介绍一下静态加载动态链接库的方法。隐式加载动态链接库通常需要提供3个文件,分别为动态链接库文件、动态链接库的头文件和lib文件(编译动态链接库时生成的文件)。首先将动态链接库的头文件加载到当前的工程中,然后使用“#pragma comment (lib,"ShowDlg.lib")”语句链接lib文件,最后就可以直接访问动态链接库头文件中的函数了。

 

本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页