首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【VC++累积】之四、动态链接库

2012-10-18 
【VC++积累】之四、动态链接库本文要说的是动态链接库dll和静态链接库lib动态链接库是一种资源的集合,包括函

【VC++积累】之四、动态链接库

本文要说的是动态链接库  dll   和静态链接库  lib

动态链接库是一种资源的集合,包括函数,变量,类,资源等都可以从动态链接库中来导出!

静态链接库的代码就可以直接放到exe文件中,动态链接库是被exe文件动态的加载或者卸载。                静态链接库不能包含其他的动态链接库和静态链接库,而动态链接库是可以的。


在本文我们会用两种方式来写动态链接库文件,即:SDK  API编写和  MFC 编写。

SDK中


1、静态链接库

这里看一下静态库的调用方式:

#include<iostream>#include"../lib/lib.h"#pragma comment(lib, "../debug/lib.lib")using namespace std;int main(void){int m = add(2, 3);cout << m << endl;system("pause");return 0;}

2、动态链接库

动态链接库的入口点和其他的应用程序就不一样了,下面我们来比较看一下:

CUI控制台程序(不是DOS):main
GUI用户界面程序:WinMain
DLL程序入口点函数:DllMain    不过,当你的dll就是导出资源,那么可以没有DllMain



我们编写了dll文件,把函数导出了,但是我们导出的函数必须有人去调用, 现在我们来看一下 如何调用dll文件。

调用dll有两种方式: 隐式连接   显示连接

1、隐式链接

主要是由编译器对dll进行加载和卸载。如果程序结束时如果还有其他应用程序使用该DLL,那么系统会使DLL的使用计数减1,当DLL的使用计数降为0时,会将DLL从内存中删除。

使用方法:

#pragma comment(lib, "..//Debug/MFCDLL.lib")_declspec(dllimport) void showdlg();void CmfcceshiDlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码showdlg();}void CmfcceshiDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码CAboutDlg dlg;dlg.DoModal();}



2012/10/4

jofranks于南昌


热点排行