vc6静态库的生成和调用
1、靜態(tài)庫(kù)的生成:
???? 在vc6.0++中Ctrl+N選擇Projects下的Win32 Static Library,Project name:SumLib,點(diǎn)擊OK,下一頁(yè)中的兩項(xiàng)可選可不選,點(diǎn)擊Finish完成。
????? 在此工程中新建lib.h和lib.cpp兩個(gè)文件,源碼如下:
????? //lib.h
???? #ifndef LIB_H
???? #define LIB_H
???? int add(int x, int y);
???? #endif
???? //lib.cpp
???? #include "lib.h"
???? #include "StdAfx.h"//此處不加此語(yǔ)句總是出錯(cuò)
???? int add(int x, int y)
???? {
???????? return (x+y);
?????}
?
???? 編譯這個(gè)工程就得到了SumLib.lib文件,此文件就是一個(gè)函數(shù)庫(kù),它提供了add的功能。將lib.h頭文件和SumLib.lib提交給用戶后,用戶就可以直接使用其中的add函數(shù)了。
?
2、靜態(tài)庫(kù)的調(diào)用:
?
?????新建一個(gè)控制臺(tái)應(yīng)用程序,僅有一個(gè)main.cpp文件,源碼如下:
???? #include "lib.h"
???? #include <iostream>
??? using namespace std;
??? #pragma comment(lib, "SumLib.lib") //指定與靜態(tài)庫(kù)一起連接
??? int main(int argc, char* agrv[])
??? {
??????? int sum = add(4, 5);
??????? cout<<sum<<endl;
??????? return 0;
???? }
???? 將生成的lib.h頭文件和SumLib.lib靜態(tài)庫(kù)放到此工程的目錄下即可執(zhí)行。
?
????? 靜態(tài)鏈接庫(kù)與動(dòng)態(tài)鏈接庫(kù)都是共享代碼的方式,它們的區(qū)別在于以下兩點(diǎn): ???????
(1)采用靜態(tài)鏈接庫(kù)(lib)時(shí),lib中的指令被全部直接包含在最終生成的exe文件中;但采用dll時(shí),該dll不必被包含在最終exe文件中,exe文件執(zhí)行時(shí)可以“動(dòng)態(tài)”地引用和卸載這個(gè)與exe獨(dú)立的dll文件,從而在運(yùn)行時(shí)節(jié)省系統(tǒng)資源。
(2)靜態(tài)鏈接庫(kù)中不能再包含其他的動(dòng)態(tài)鏈接庫(kù)或者靜態(tài)庫(kù),而在動(dòng)態(tài)鏈接庫(kù)中還可以再包含其他的動(dòng)態(tài)或靜態(tài)鏈接庫(kù)。
?
?????(3)靜態(tài)鏈接庫(kù)由.h和.lib文件組成,.h文件要聲明.lib中供外界調(diào)用的函數(shù)的原型,不能缺少。
???? (4)VC6中調(diào)用靜態(tài)鏈接庫(kù).lib一共有3種方法:
????? ①使用語(yǔ)句#include "lib.h",并將lib.h拷貝到當(dāng)前工程目錄下;對(duì)SumLib.lib使用語(yǔ)句 #pragma comment(lib,"***//SumLib.lib"),將SumLib.lib拷貝到目錄"***//SumLib .lib"下。?????????????????????????????????????????????????????????????????????
????? ②使用語(yǔ)句#include “l(fā)ib.h",并在工具->選項(xiàng)->目錄->路徑中添加lib.h的路徑;對(duì)SumLib.lib,在工程->設(shè)置->連接->對(duì)象/庫(kù)模塊中添加SumLib.lib,并在工具->選項(xiàng)->目錄->路徑中添加SumLib.lib的路徑。
????? ③lib.h文件的處理同①或②;對(duì)SumLib.lib,在工程->添加到工程->文件中導(dǎo)入此.lib文件。
?
總結(jié)
以上是生活随笔為你收集整理的vc6静态库的生成和调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++读写ini配置文件GetPriva
- 下一篇: MFC如何打开文件路径