VS下生成與配置靜態庫與動態庫(一)
此處僅以VS2010為例,詳細說明一下如何在VS環境下生成和使用C++的靜態庫與動態庫。Qt下生成和使用靜態和動態庫後續再講。
本文僅供初學者參考,如果有問題歡迎大家指正。
首先簡單地理解一下靜態庫與動態庫,以及兩者的區別。
靜態庫(*.lib): 將*.cpp檔案中的函式的地址和定義,以及函式之間的連結關係通通打包,生成的一個二進位制檔案;
動態庫(*.lib+*.dll): 動態庫的*.lib檔案,打包的只是*.cpp檔案中函式的地址和連結,函式的具體定義打包在*.dll檔案中。
聯絡:
1.二者都不包含函式的宣告部分,因此呼叫這兩種庫的時候,都需要包含相應的標頭檔案(*.h);
2.靜態庫和動態庫的*.lib檔案,在生成可執行檔案(*.exe)的時候,都將被打包進*.exe檔案中;
區別:
1.靜態庫的*.lib檔案遠大於動態庫的*.lib檔案;
2.動態庫的*.dll檔案作為可執行檔案*.exe的附加檔案加入到程式中,一般放在*.exe的同級目錄下。
簡單地介紹完這兩種庫,下面來看看在VS下是怎麼生成和使用的。
靜態庫:
生成:
1.新建一個空的Visual Studio 2010 ,Visual C++, Win32 控制檯工程,取名為“testlib”;
(你可以在嚮導中選擇靜態庫選項,也可以在後續的設定中設定生成靜態庫,這裡我們在後面進行設定);
2.構造一個類用於測試,這裡叫做“CAdd”類,進行的是整數的加法運算,宣告和實現分別儲存在檔案“add.h”和
“add.cpp”中:
“add.h”:
#ifndef ADD_H
#define ADD_H
class CAdd
{
public:
CAdd();
~CAdd();
int add(int a, int b);
};
#endif
"add.cpp":
#include "add.h"
CAdd::CAdd()
{
}
CAdd::~CAdd()
{
}
int CAdd::add(int a, int b)
{
return a+b;
}
可以在“屬性”->"C++"->"預編譯頭"下選擇“不使用預編譯頭”去掉cpp檔案的“stdafix.h”的新增要求
3. 選擇編譯為靜態庫:
在“屬性”->“配置屬性"->”常規“->”配置型別“下選擇”靜態庫(.lib)“(預設是"應用程式(.exe)"),在此介面上可以更改輸出檔案(.lib)所在的目錄,
以及lib檔案的名稱(預設是工程的名稱):
4.選擇生成解決方案,這時在你剛剛選擇的輸出資料夾下(這裡是lib資料夾),已經生成了靜態庫檔案,add.lib
使用:
使用很簡單:
1.屬性-》配置屬性-》C/C++->常規-》附加包含目錄,填寫”add.h“所在目錄;
2.屬性-》配置屬性-》連結器-》附加依賴項,填寫”add.lib“;
3.屬性-》配置屬性-》連結器-》附件依賴目錄,填寫”add.lib“所在目錄;
4.在用到CAdd這個類的地方新增標頭檔案包含#include<add.h>
5.具體呼叫CAdd類的函式
下一篇將介紹如何在Visual Studio下生成和使用動態連結庫
相關文章
- linux下的靜態庫與動態庫Linux
- cmake:生成靜態庫和動態庫
- 動態連結庫與靜態連結庫
- 菜鳥教程——iOS動態庫與靜態庫iOS
- ios靜態庫與動態庫的區別iOS
- C++靜態庫與動態庫深入研究C++
- 靜態庫生成
- 靜態庫與DLL
- Linux 依賴動態庫 / 靜態庫的動態態庫 / 靜態庫Linux
- iOS 靜態庫 與私有庫iOS
- Android:JNI與NDK(二)交叉編譯與動態庫,靜態庫Android編譯
- linux靜態庫的生成與使用(轉)Linux
- Linux下的靜態庫、動態庫和動態載入庫Linux
- ios 開發中 動態庫 與靜態庫的區別iOS
- Linux下靜態庫生成指南Linux
- Linux下的共享庫(動態庫)和靜態庫Linux
- Linux 動態庫與靜態庫製作及使用詳解Linux
- android下java的靜態庫和動態庫AndroidJava
- ios靜態庫和動態庫iOS
- 簡述Linux下的靜態庫和動態庫Linux
- Linux環境下建立靜態庫和動態庫Linux
- 一、靜態庫和動態庫,Makefile專案管理專案管理
- C靜態庫的建立與使用--為什麼要引入靜態庫?
- Win32動態連結庫與靜態連結庫的區別Win32
- Linux 動態庫生成與使用指南Linux
- Linux動態庫生成與使用指南Linux
- Linux 靜態庫生成指南Linux
- 動態庫和靜態庫的區別
- 封裝動態庫dll與靜態庫lib(原理及簡單例項)封裝單例
- Linux共享庫、靜態庫、動態庫詳解Linux
- linux下靜態庫、動態庫編譯及makefile書寫Linux編譯
- Linux下建立靜態庫、動態庫以及簡單的makefileLinux
- VS 環境下生成靜態lib庫及呼叫方法
- 同時配置動態監聽與靜態監聽
- iOS動態庫和靜態庫的運用iOS
- iOS 靜態庫(.a, .framework) 動態庫(.framework, dylib)iOSFramework
- 靜態路由原理與配置路由
- iOS 靜態庫詳解與開發iOS