VS 2008 Standard 繁中 SP1 (9.0.30729.1 SP)
XP pro sp3
方案內容:
實作自行開發的Static Link Libary靜態連結函式庫專案,
以及使用此函式庫的另一個Win32主控台專案
1.VCLib專案定義函式原型(.h)並實作(.lib),以供其它程式使用
(Compile時用到.h Link時用到.lib)
2.TestStaticLib專案使用VCLib專案中的函式,如同使用標準函式庫一樣
而其中的差異是:標準函式庫的路徑,IDE(開發環境)已經預設好了(在安裝時)
但使用自行開發的函式庫.h及.lib時,檔案的路徑需在專案屬性中手動加入
使用標準函式庫
#include
....
void main(void)
{.... printf("");}
<對照>
使用自己的函式庫
#include
...
void main(void)
{.... VCLib_MyFunction();}
//--------------------------------------------------------------------------------
實際操作:
一、使用VC的專案精靈,產生VCLib專案
新增Win32專案=>選Static Static Library,不勾「Pre-Compiled header」及「MFC support」
得到一空的專案,自行編寫及加入.cpp及.h
專案名稱:VCLib
主要原始檔:VCLib.cpp, VCLib.h
主要函式:int AddMethod(int a, int b)
用途:將二個整數相加的值回傳
二、在方案中新增一新專案TestStaticLib
類型:主控台應用程式,可勾選「先行編譯標頭檔」
(以後需要include的函式庫都加在stdafx.h中即可)
專案名稱:TestStaticLib
主要原始檔:TestStaticLib.cpp
目的:#include "VCLib.h"的int AddMethod(int a, int b)來用
//--------------------------------------------------------------------------------
Tony :錯誤訊息及改進方法
fatal error C1083: 無法開啟包含檔案: 'VCLib.h': No such file or directory
若複製一份VCLib.h檔至TestStaticLib專案目錄下,然後用#include "VCLib.h"簡單可行
(只在方案總管內加入.h檔,在Compile或Build時無效的,因為Compiler
仍不知道.h的路徑,方案總管對標頭檔的增減只算是VS IDE的一個檔案管理工具罷了)
但要更改VCLib.h時,要手動做一次上述動作,既麻煩又常會忘。
故改用 #include
然後在[專案屬性]設定好路徑
C/C++ => 一般 => 其它include目錄
加入 "$(SolutionDir)VCLib\" 這個巨集的相對路徑
以後就只維護一份VCLib.h即可
--------------------------------------------------------------------------------
TestStaticLib.obj : error LNK2019: 無法解析的外部符號
"int __cdecl AddMethod(int,int)" (?AddMethod@@YAHHH@Z) 在函式 _wmain 中被參考
TestStaticLib =>專案屬性=>連結器=>其它相依性=>加入VCLib.lib
(雖然已經加入路徑了,但VC卻不知要用它 =__=)
-------------------------------------------------------------------------------
LINK : fatal error LNK1104: 無法開啟檔案 'VCLib.lib'
TestStaticLib =>專案屬性=>連結器=>將VCLib.lib的路徑加入
此方案中因為VCLib專案的輸出檔預設為$(OutDir)\$(ProjectName).lib
故路徑亦可用$(OutDir)
--------------------------------------------------------------------------------
Visual Studio方案相關:
因為VCLib專案要先產生VCLib.lib,才能供TestStaticLib用
故方案屬性=>專案相依性=> 專案TestStaticLib要勾選"相依於VCLib"
如此在"建置方案"時,就會有對的順序,不致有錯誤訊息產生
--------------------------------------------------------------------------------
設定路徑小技巧:
在選擇如Include路徑的對話方塊,右下角有個[巨集]按鈕,可提供
一些相對路徑的巨集名稱,例如:$(OutDir)
使用相對路徑時,就算將整個方案的資料夾搬到別的路徑或電腦下
仍然可以正常Build (但安裝SDK時的相對路徑也不可被手動更改)
程式碼範例還在找地方上傳…
沒有留言:
張貼留言