在具體講解動態連結程式庫DLL之前,我們先來講解靜態連結庫,通過一個靜態連結庫的例子可以快速的協助我們建立“庫”的概念。
一個靜態連結庫的例子
首先我們使用VC ++建立靜態連結庫,利用VC ++建立一個Win32 Static Library類型的工程,並建立兩個檔案LibTest.h和LibTest.cpp,代碼如下:
//檔案LibTest.h
#ifndef LIB_H #define LIB_H extern "C" int add(int x,int y);//聲明為C編譯、串連方式的外部函數 #endif
//檔案LibTest.cpp
#include "LibTest.h" int add(int x,int y) { return x + y; }
直接編譯這個工程,會在工程目錄下的debug目錄下得到一個.lib檔案,這個檔案就是一個函數庫,那麼我們怎麼使用它呢
----------------------------------------------------------------------華麗的分割線--------------------------------------------------------------------------
接著,我們再建立一個簡單的Win32 Console Application工程Test,該工程只有一個Test.cpp檔案,代碼如下:
//檔案Test.cpp
#include <stdio.h> #include "..\LibTest\LibTest.h" #pragma comment( lib, "..\\LibTest\\debug\\libTest.lib" ) //指定與靜態庫一起串連 int main(int argc, char* argv[]) { printf( "2 + 3 = %d", add( 2, 3 ) );
return 0; }
注意這個代碼中#pragma comment( lib , "..\\debug\\libTest.lib" )的意思是讓本檔案產生的.obj檔案與剛才產生libTest.lib一起連結。
如果不用#pragma comment指定,則可以直接在VC++中設定,,依次選擇tools-->options-->directories-->library files菜單或選項,填入庫檔案路徑。
運行程式,得到結果: