Dll生成與創建

環境:

VC++2008  Win7 32bit

 

 

使用動態鏈接庫具有以下優點:(1)隱藏源代碼;(2)實現代碼重用;(3)當程序調用DLL中的函數時不需要重新編譯,提高編譯速度;(4)當多個程序調用同一DLL中函數時,內存中只有一個副本,節省內存空間。

 

 

調用Dll時有2種方式:

運行時動態鏈接:(顯示鏈接)

   應用程序調用LoadLibrary函數或LoadLibraryEx函數以在運行時加載DLL。成功加載DLL後,可以使用GetProcAddress函數獲得要調用的導出的DLL函數的地址。在使用運行時動態鏈接時,無需使用導入庫文件。

 

加載時動態鏈接:(隱式鏈接)

    需要.dll .lib .h分別放在程序目錄下

a.工程比較小時,可將DLL,H和LIB文件直接複製到當前工程下,不需要添加環境變量。這時在包含對應頭文件時應當使用雙引號而不是尖括號。

 

b.工程比較大,則可以在本地硬盤的其它位置新建一個文件夾,命名爲myDllTest,再新建三個子文件夾bin,include和lib,將DLL文件放到bin中,H文件放到include中,LIB文件放到lib中。然後打開環境變量編輯器(在開始裏面直接輸入編輯系統環境變量,然後搜索即可)。新建環境變量myLibTest,變量值爲myDllTest文件夾所在目錄。然後編輯Path環境變量,添加語句%myDllTest%\bin;(不同的語句用;間隔)。

 

 

可以根據下面的 準則來判斷使用哪一種鏈接方式。 

(1)啓動性能 如果應用程序的初始啓動性能很重要,則應使用運行時動態鏈接。

(2)易用性 在加載時動態鏈接中,導出的 DLL 函數類似於本地函數。這使您可以方便地調用這些函數。

(3)應用程序邏輯在運行時動態鏈接中,應用程序可以分支,以便按照需要加載不同的模塊。在開發多語言版本時,這一點很重要。

 

生成:加法函數

新建->項目->VC++->Win32控制檯應用程序->應用類型:DLL  附加選項爲空-> finlish

 

MyDll.h:

extern "C" _declspec(dllexport) int Sum(int a,int b);//加法函數
MyDll.cpp:
#include "MyDll.h"

int Sum(int a,int b)
{
	return a+b;
}

單擊編譯後,及可生成DLL文件和Lib文件.

 

創建: 

創建Win32工作臺程序,進行隱式鏈接.

copy 三個文件安裝目錄.

 

測試代碼如下:

#include "stdafx.h"
#include "MyDll.h"
#pragma comment(lib,"DllCreate.lib");
int _tmain(int argc, _TCHAR* argv[])
{
	int c=Sum(3,5);
	printf("a+b=%d",c); 
	getchar();
	return 0;
}

測試通過

 

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