DLL (Dynamic Link Library)动态链接库,是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件,其优点主要有:1. 有助于节省内存;2. 有助于资源共享;3. 不需编译的软件系统升级;4. 支持多语言程序。当然,有的时候我们也可以将一些核心的或者不愿意公开提供的函数编写为DLL,从而起到隐藏和保护的作用。
下面结合实例详细说明在Visual Studio 2008 SP1 IDE中如何创建、编写和导出VC++ MFC DLL,以及如何调用生成的DLL。(完整实例可在我的CSDN资源中下载:[http://download.csdn.net/detail/margin1988/8336697](http://download.csdn.net/detail/margin1988/8336697))
(1)打开Visual Studio 2008 SP1 IDE,创建VC++ MFC DLL工程,如图所示:
![](https://box.kancloud.cn/2016-08-31_57c6b4a8542c7.jpg)
(2)在自动生成的“工程名.cpp”(如:FirstDLL.cpp)文件中,编写要导出的函数(注:在该项目属性中工程字符集选择了“使用多字节字符集”):
~~~
/**函数:int calculateLineNum(CString filePath)
功能:用于计算文本文件的行数
描述:只需要指定文本文件的路径,若找到,则返回其行数,若没找到,则返回0 */
extern "C" _declspec(dllexport) int calculateLineNum(CString filePath){
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CStdioFile file;
CString str;
int lineNum=0;
if (file.Open(_T(filePath),CFile::modeRead | CFile::typeText))
{
file.SeekToBegin();
while (file.ReadString(str))
{
lineNum++;
}
file.Close();
}
return lineNum;
}
~~~
(3)点击“生成解决方案”,生成了供程序调用的DLL文件和Lib文件(该例中只是导出了一个函数,不需要.h文件);
(4)生成DLL及其导出函数的调用方法:
1)将.dll和.lib文件拷贝到你的工程的目录下;
2)在程序中预定义和导入库和函数:
~~~
#pragma comment(lib, "FirstDLL.lib")
extern "C" _declspec(dllimport) int calculateLineNum(CString filePath);
~~~
3)或者,也可以在工程的属性中添加链接:
![](https://box.kancloud.cn/2016-08-31_57c6b4a880890.jpg)
然后,程序中就只需要这一句:
~~~
extern "C" _declspec(dllimport) int calculateLineNum(CString filePath);
~~~
4)调用DLL中的导出函数:
~~~
CString path="ReadMe.txt";
int num = calculateLineNum(path);
~~~
- 前言
- VC++中自定义热键及响应
- CFileDialog文件对话框
- VC++中客户区保存为BMP图片
- VC++读、写注册表
- VC++播放音频文件和音频数据的方法
- VC++调用Matlab编写的DLL(混合编程)
- VC++中文件读、写和其他相关操作汇总
- VC++获取系统当前时间
- VC++按钮控件字体设置
- VC++软件界面风格简单美化
- VC++中一些常用的数据类型之间的相互转化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及随机相关
- VC++中结构体的定义及使用
- VC++中List Control控件的使用方法介绍
- VC++中窗口过程函数及其消息发送、响应机制介绍
- VC++中Ribbon编程架构及SDI架构多视图切换介绍
- 串口通信基础知识及VC++实现
- VC++中单个键盘按键的响应
- VC++中的计时器及多媒体高精度计时器
- VC++编写DLL导出函数及其调用方法
- VC++对话框(CDialog)的全屏显示及控件居中显示
- VC++对话框(CDialog)添加背景图片
- VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法
- VC++对Access数据库的操作(查询、插入、更新、删除等)