C 生成和使用dll和lib

2021-06-23 01:29:24 字數 2051 閱讀 5850

dll和lib:

動態鏈結庫(dll)是乙個可以被其他應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。和可執行檔案(exe)非常類似,區別在於dll中雖然包含了可執行**卻不能單獨執行,而應由windows應用程式直接或間接呼叫。

靜態鏈結庫(lib)包含函式**本身,在編譯時直接將**加入程式當中。當多個程式都呼叫相同函式時,記憶體中就會存在這個函式的多個拷貝,這樣就浪費了寶貴的記憶體資源。

使用dll和lib:

使用lib所需檔案

標頭檔案:包含lib中說明輸出的類或符號原型或資料結構。

lib檔案:檔案是靜態編譯出來的,索引和實現都在其中。

靜態編譯的lib檔案有好處:給使用者安裝時不需要再掛動態庫。缺點:導致應用程式比較大,失去動態庫的靈活性,在版本公升級時,同時要發布新的應用程式。

使用dll所需檔案

標頭檔案:包含lib中說明輸出的類或符號原型或資料結構。

lib檔案:包含被dll匯出的函式的名稱和位置。

dll檔案:包含實際的函式和資料。

應用程式使用lib檔案鏈結到所需要使用的dll檔案,庫中的函式和資料並不複製到可執行檔案中,因此在應用程式的可執行檔案中,存放的不是被呼叫的函式**,而是dll中所要呼叫的函式和記憶體位址,這樣當乙個或多個應用程式執行時再把程式**和被呼叫的函式**鏈結起來,從而節省了記憶體資源。

實現方法:

1、在vs2012中建立乙個win32控制台專案mylib。

2、新建libtest.h和libtest.cpp。**如下:

// libtest.h

#ifndef _lib_test_h

#define _lib_test_h

#include class libtest

;#endif // !_lib_test_h

// libtest.cpp

#include "libtest.h"

void libtest::display()

3、選中工程->右鍵->屬性->配置屬性->常規,可以看到專案預設值的配置型別有好幾種型別,選擇靜態庫型別生成lib檔案,選擇動態庫型別生成dll檔案,選擇應用程式生成exe檔案,這裡我們選擇靜態庫。

4、生成解決方案(f7),這時候會生存mylib.lib檔案。

5、新建乙個你要使用mylib.lib的工程uselib。要使用mylib.lib檔案,就得有libtest.h和mylib.lib。在uselib工程中新建兩個資料夾headfile(存放標頭檔案libtest,h)、libfile(存放lib檔案mylib.lib)。

6、配置uselib工程,指向這兩個資料夾。

7、使用

#include "stdafx.h"

#include #include "libtest.h" //標頭檔案

#pragma comment(lib, "mylib.lib") //加入鏈結庫

int _tmain(int argc, _tchar* argv)

控制台輸出結果:

如果想使用dll檔案,那麼就在第3步將型別改為動態庫,這樣會生成lib和dll檔案,將這兩個檔案拷貝到libfile資料夾中即可。

如何使用dll和lib

針對vs2010下的個人理解 一 1 工程目錄 即是 vcxproj 或者 vcxproj.filters 檔案所在的目錄,即你寫的 的位置。2 解決方案目錄 即是 sln 檔案的所在的目錄。3 表示的當前目錄。4 表示當前目錄的前乙個目錄。二 當我們生成乙個dll檔案時,會產生dll檔案和lib檔...

lib和 dll的區別和使用

共有兩種庫 1.一種是lib包含了函式所在的dll檔案和檔案中函式位置的資訊 入口 由執行時載入在程序空間中的dll提供,稱為動態鏈結庫dynamic link library。2.一種是lib包含函式 本身,在編譯時直接將 加入程式當中,稱為靜態鏈結庫static link library。1.動...

有 h和 lib 如何生成DLL

整理自 http social.msdn.microsoft.com forums zh tw 230 thread fdf1dba3 3804 4bb4 95c3 c54758fb3358 q 我有乙份硬體廠商給的sdk,裡面有 x.h 和 x.lib 還有vc6.0的操作範例.不過我目前要是使用...