电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

如何用VC写DLL

如何用VC写DLL_第1页
1/11
如何用VC写DLL_第2页
2/11
如何用VC写DLL_第3页
3/11
4.1 一个简单的DLL 第2 节给出了以静态链接库方式提供add 函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add 函数。 如图6,在VC++中new 一个Win32 Dynamic-Link Library 工程dllTest(单击此处下载本工程附件)。注意不要选择MFC AppWizard(dll),因为用MFC AppWizard(dll)建立的将是第5、6 节要讲述的MFC 动态链接库。 图6 建立一个非 MFC DLL 在建立的工程中添加 lib.h 及 lib.cpp 文件,源代码如下: /* 文件名:lib.h */ #ifndef LIB_H #define LIB_H extern "C" int __declspec(dllexport)add(int x, int y); #endif /* 文件名:lib.cpp */ #include "lib.h" int add(int x, int y) { return x + y; } 与第2节对静态链接库的调用相似,我们也建立一个与 DLL工程处于同一工作区的应用工程dllCall,它调用DLL中的函数add,其源代码如下: #include #include typedef int(*lpAddFun)(int, int); //宏定义函数指针类型 int main(int argc, char *argv[]) { HINSTANCE hDll; //DLL句柄 lpAddFun addFun; //函数指针 hDll = LoadLibrary("..\\Debug\\dllTest.dll"); if (hDll != NULL) { addFun = (lpAddFun)GetProcAddress(hDll, "add"); if (addFun != NULL) { int result = addFun(2, 3); printf("%d", result); } FreeLibrary(hDll); } return 0; } 分析上述代码,dllTest工程中的 lib.cpp文件与第 2节静态链接库版本完全相同,不同在于 lib.h对函数 add的声明前面添加了__declspec(dllexport)语句。这个语句的含义是声明函数 add为 DLL的导出函数。DLL内的函数分为两种: (1)DLL导出函数,可供应用程序调用; (2) DLL内部函数,只能在 DLL程序使用,应用程序无法调用它们。 而应用程序对本DLL的调用和对第2节静态链接库的调用却有较大差异,下面我们来逐一分析。 首先,语句 typedef int ( * lpAddFun)(int,int)定义了一个与 add函数接受参数类型和返回值均相同的函数指针类型。随后,在 main函数中定义了 lpAddFun的实例 addFun; 其次,在函数 main中定义了一个 DLL HINSTANCE句柄实例 hDll,通过 Win32 Api函数LoadLibrary动态加载了 DLL模块并将 DLL模块句柄赋给了 hDll; 再次,在函数 main中通过 Win32 Api函数 GetProcAddress得到了所...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

如何用VC写DLL

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部