dll文件

1、dll文件是什么

dll即dynamic link library(动态链接库)的简称,在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被多个应用程序使用。

2、dll的功能

通过使用dll,程序可以实现模块化,由相对独立的组件组成。例如,一个应用程序可以在运行时将各个模块加载到主程序中。由于模块之间是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。此外,可以通过简单的替换相应的dll文件完成对应用程序的升级,而不会影响该程序的其他部分。

3、查看已有dll文件的内容:

3.1 dumpbin命令(在VS2010的命令提示符中使用)

3.2 reflector软件

4、dll文件的创建(利用VS2010)

4.1、新建win32应用程序,应用程序类型选择dll,附加选项勾选“导出符号”


4.2、在dllTest.h中添加如下代码:

DLLTEST_API void printMax(int &,int &);

4.3、在dllTest.cpp中的示例函数下面添加如下代码:

DLLTEST_API void printMax(int &a,int &b)
{
	cout<<"max num is:"<<(a > b ? a:b)<<endl;
}

4.4、然后生成解决方案


5、dll文件的使用

5.1、隐式链接

通过在应用程序中使用关键字#pragma和_declspec(dllimport),实现调用dll中的函数

示例代码如下:

dllTest.lib放到存放.cpp,.h文件的目录下

dllTest.dll放到Debug目录下(EXE文件所在路径)

#include <iostream>

#pragma comment(lib,"dllTest.lib")

_declspec(dllimport) void printMax(int &,int &);


int main()
{
	int m = 3,n = 100;
	printMax(m,n);
	return 0;
}

5.2 显式链接

使用显示链接时,原dll中函数需要用extern "C" _declspec(dllexport)加以修饰

extern "C" _declspec(dllexport) void printMax(int &a,int &b)
{
	cout<<"max num is:"<<(a > b ? a:b)<<endl;
}

在应用程序中这样调用:

把dllTest.dll文件拷贝到当前工程的Debug目录下

#include<Windows.h>
#include<iostream>
void main(void)
{
	int m = 3,n = 5;
	typedef void(*pMax)(int &a,int &b);
	HINSTANCE hDLL;
	pMax Max;
	hDLL = LoadLibrary("dllTest.dll");
	Max=(pMax)GetProcAddress(hDLL,"printMax");
	Max(m,n);
	FreeLibrary(hDLL);
}








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章