原文地址:http://www.cnblogs.com/because/archive/2012/02/18/2357109.html
摘要
利用Visual C++6.0创建和使用DLL(Dynamic-Link Library).
概述
在实际编程时,我们可以把完成某种功能的函数放在一个动态链接库中,然后给其他程序调用。
WinAPI中所有的函数都包含在3个最重要的DLL中。
- Kernel32.dll
它包含那些用于管理内存、进程和线程的函数,例如CreateThread函数;
- User32.dll
它包含那些用于执行用户界面任务的函数,例如CreateWindow函数;
- GDI32.dll
它包含那些用于画图和显示文本的函数。
用法
新建一个Win32 Console Application工程:
以MathLib为工程名称新建Win32 Dynamic-Link Library的空工程,
添加C++ Source File 源文件到工程中,命名为MathLib.c
添加以下代码:
1 #define MATH_API _declspec(dllexport)
2 #include "MathLib.h"
3 int add(int a,int b)
4 {
5 return a+b;
6 }
7 int subtract(int a,int b)
8 {
9 return a-b;
10 }
添加C/C++ Header File 头文件到工程中,命名为MathLib.h
1 #ifdef MATH_API
2 #else
3 #define MATH_API _declspec(dllimport)
4 #endif
5 MATH_API int add(int a,int b);
6 MATH_API int subtract(int a,int b);
编译后生成MathLib.dll和MathLib.lib两个动态链接库文件。
测试
-
隐式调用
新建MFC AppWizard[exe]可执行工程DllTest,用于测试刚才新建动态链接库MathLib的功能。
复制MathLib.dll,MathLib.lib,MathLib.h到当前工程,
在DllTestDlg.cpp中添加头文件引用:
#include "MathLib.h"
添加MathLib.h头文件至工程,
在Project->Setting->Link->object/library modules:添加MathLib.lib
添加一个按钮Add到Dialogue中,在Add按钮的响应函数中添加以下代码:
1 void CDllTestDlg::OnBtnMath()
2 {
3 // TODO: Add your control notification handler code here
4 CString res;
5 res.Format("10+2=%d",add(10,2));
6 MessageBox(res);
7 }
编译运行程序,
成功运行MathLib中的加法功能。
工程文件: