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);
}








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