目標: 利用自己的函數,來調用其它打包好的靜態lib庫中的函數。
1 . 生成自己的lib庫:(vs2008)
新建一個工程, 取好名稱, 然後next到 Application type中設置爲 Static library , 設置 Application options爲 Empty project ,畢竟我不需要這個預編譯的頭文件。
2. 添加一個文件到該工程中 , 我這裏想要打包到lib庫中有一個函數, 名爲hello(char *a) ,如下:
#include <stdio.h>
void hello(char *a){
printf("%s", a);
}
3 . 編譯, 就會在所在編譯目錄下面的debug文件夾中生成了一個packagelib.lib(名字跟你的工程名稱有關)的文件,這個就是我們需要的靜態lib庫。
4 . 我們希望通過我們的函數來調用這裏的 hello(char *a) 函數,同樣,我們新建一個自己的工程, 在設置Application options時, 不要選擇Static library ,而是選擇 Console application , 同樣沒有添加預編譯的頭文件。代碼如下:
#include <stdio.h>
void hello(char *);
int main(){
hello("i am CAP !\n");
return 0;
}
5. 這裏需要注意的一點就是, 需要在main()的上面寫上lib庫中的函數聲明, 告訴編譯器其他地方有一個叫hello(char *);這樣的函數, 這樣是爲了編譯通過。在編譯main.cpp之前,你需要設置一下工程的屬性以便在鏈接的時候能夠鏈接到靜態庫。 【右鍵工程】 ==> 【Property】 ==> 【Configuration Properties】 ==> 【Linker】 ==> 【Input】 ==> 【Additional Dependences】 選擇剛剛生成的那個lib庫所在的路徑+lib庫的文件名稱+後綴名。
6. 這樣就可以編譯main.cpp 了, 執行後的效果就是 "I am CAP ! " 。