DLL學習系列一:c++靜態鏈接庫

 靜態鏈接庫就是把一些通常是有某種共同特點和用途函數封裝(這裏的封裝並不是c++中類的封裝,可以理解爲集中存放)在一個.lib文件中,這些函數和數據是以二進制代碼的形式保存的,在客戶編譯可執行文件的時候,鏈接器將它們鏈接到exe文件中去,所以在發佈產品的時候不需要發佈靜態鏈接庫。
下面使用VC6.0演示一個最簡單的使用靜態鏈接庫的例子:
         首先,新建一個Win32 Static Library Project。新建兩個文件:lib.h 和lib.cpp。代碼如下
None.gif//lib.h
None.gif
#ifndef TEST_H
None.gif
#define TEST_H
None.gif
extern "C" int add(int x, int y);
None.gif
None.gif
#endif

None.gif//lib.cpp
None.gif
#include "lib.h"
None.gif
None.gif
int add(int x, int y)
{
    
return x+y;
}
其中extern "C" 是提供給C++程序調用必須添加的,詳細討論可以看http://www.cnblogs.com/xulei/archive/2006/11/12/558139.html
編譯後debug文件夾下生成了lib.h和lib.lib文件。再新建一個Win32 Console Application Project。只有一個文件test.cpp。
    //test.cpp
None.gif#include<stdio.h>
None.gif#include 
"../lib.h"
None.gif
None.gif
int main ()
{
    printf(
"2+3 = %d /n", add(2,3));
    
return 0;
}
其中#include"../lib.h"是文件的相對路徑。如果編譯找不到文件,檢查路徑設置,在tools-options-directories-library files菜單或選項,填入庫文件路徑。將Project-Setting-C/C++-Precompile Headers設置爲Not Using Precompile Headers。
      運行程序,我們可以看到加法函數被正確的調用了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章