没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本文实例讲述了C++编写DLL动态链接库的步骤与实现方法。分享给大家供大家参考,具体如下: 在写C++程序时,时常需要将一个class写成DLL,供客户端程序调用。这样的DLL可以导出整个class,也可以导出这个class的某个方法。 一、导出整个class 方法很简单,只需要在类的头文件中class和类名之间加上_declspec(dllexport),同时在另外一份提供给客户端调用程序使用的类的头文件中class和类名之间加上_declspec(dllimport)。为了能让客户端程序和DLL程序公用该类的一份头文件,通常在类的头文件中使用宏和预编译指令来处理。如下DLLTest.h:
资源推荐
资源详情
资源评论










格式:x-zip 资源大小:16.5KB 页数:2




















C++编写编写DLL动态链接库的步骤与实现方法动态链接库的步骤与实现方法
本文实例讲述了C++编写DLL动态链接库的步骤与实现方法。分享给大家供大家参考,具体如下:
在写C++程序时,时常需要将一个class写成DLL,供客户端程序调用。这样的DLL可以导出整个class,也可以导出这个class的
某个方法。
一、导出整个一、导出整个class
方法很简单,只需要在类的头文件中class和类名之间加上_declspec(dllexport),同时在另外一份提供给客户端调用程序使用
的类的头文件中class和类名之间加上_declspec(dllimport)。为了能让客户端程序和DLL程序公用该类的一份头文件,通常在类
的头文件中使用宏和预编译指令来处理。如下DLLTest.h:
#ifdef DLL_TEST_API
#else
#define DLL_TEST_API _declspec(dllimport)
#endif
Class DLL_TEST_API CDLLTest
{
Public:
CDLLTest();
~CDLLTest();
int Add(int a, int b);
};
DLLTest.cpp如下:
#define DLL_TEST_API _declspec(dllexport)
#include "DLLTest.h"
这样,在DLL编译时DLL_TEST_API被定义为_declspec(dllexport),而且客户端程序编译时它被定义为_declspec(dllimport)。
二、导出这个类的某个或者某几个方法二、导出这个类的某个或者某几个方法
这时,需要将_declspec(dllexport)放到成员函数名前,如DLLTest.h:
#ifdef DLL_TEST_API
#else
#define DLL_TEST_API _declspec(dllimport)
#endif
Class CDLLTest
{
Public:
CDLLTest();
~CDLLTest();
int DLL_TEST_API Add(int a, int b);
};
但是,如果仅仅是这样的话,当客户端程序#include这个头文件后,定义DLLTest这个类的一个对象后(静态方式链接DLL),客
户端程序无法链接通过,会提示构造函数和析构函数无法解析,此时,需要将构造函数和析构函数前也加上DLL_TEST_API
宏即可。
当然这里还有个问题就是类的函数在导出后,名字会发生变化,我们可以在函数名前再加上extern “C” ,如 extern “C”
DLL_TEST_API int Add(int a ,int b);但这只解决了C与C++调用时名字变更问题,可靠的方法还是增加一个模块定义文件def,
在该文件中定义导出函数的名称,我们将在后面看到样例。
DLL编写完成后,就只剩下客户端程序如何去调用该DLL了,静态方式调用DLL和动态方式调用DLL。
一、静态方式调用一、静态方式调用DLL
这个方法就简单了,将DLLTest.h头文件和DLLTest.lib,DLLTest.dll文件拷贝到客户端程序的当前目录下,在客户端程序中
#include<DLLTest.h>,然后通过#pragma comment(lib,”DLLTest.lib”)的方式引入lib库,或者在客户端程序的工程属性里面增
加对该lib文件的引入。
然后就可以在客户端程序中如同使用本地的一个class一样使用该DLL了,如:
CDLLTest dllTest;
dllTest.Add(1,2);
二、动态方式调用二、动态方式调用DLL
资源评论

- 小米智能生活2023-07-24文中除了介绍步骤和方法外,还附带了一些常见问题的解答,对于遇到困惑的读者非常有帮助。
- 郑瑜伊2023-07-24非常详细地介绍了编写DLL动态链接库的过程,对于想要深入了解的开发者来说是一个很好的参考资料。
- 天使的梦魇2023-07-24作者用简洁的语言和实际的例子解释了复杂的概念,让读者更容易理解和掌握。
- 白羊带你成长2023-07-24尽管该文件没有过多炫技和浮夸的描述,但它给读者提供了一个基础扎实、可靠的指南,绝对值得一读。
- 笨爪2023-07-24这篇文件提供了清晰简洁的步骤和实现方法,非常适合初学者。

weixin_38706197
- 粉丝: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 电子商务个人作业.docx
- 动车组管理信息系统自动化设备接口规范动车论坛.doc
- 2011年5月软考系统集成项目管理工程师考试上午试题答案.doc
- 计算机大数据在高校教学中的应用.docx
- 10万级etl批量作业调度工具Taskctl之轻量级Web应用版.doc
- (源码)基于C语言的嵌入式双板互动乒乓球游戏.zip
- java程序设计学生成绩统计.ppt
- 计算机软件开发技术及其发展趋势.docx
- 翻转课堂教学模式在计算机专业基础英语教学中的应用研究.docx
- excel计算大全钢结构计算表格报价.xls
- Java学生成绩管理系统分析方案22.doc
- (源码)基于Arduino的电子编程学习项目.zip
- 大数据时代政府审计面临的机遇和挑战.docx
- 企业信息化建设存在的问题及其解决对策.docx
- 计算机局域网管理与安全问题研究.docx
- 互联网+环境下大学英语多维互动教学探究.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
