1.打開VS2013,為了測試的便捷,我們新建Win32控制台程序,且項目名稱為zlibTest;
2.為了項目的直觀,選中如圖三個文件,右鍵移除,點擊刪除。你可以不必這么做,只是測試;
3.將已編譯生成的zlib1.2.11靜態庫zlibstat.lib與頭文件zconf.h / zlib.h(zlib1.2.11靜態編譯),一起放入新建的文件夾CommonFiles,移動到與工程同級目錄(你可以放置到喜歡的地方);
4.VS2013解決方案,選擇工程名zlibTest,右鍵屬性,我們修改輸出目錄與工作目錄為..\..\bin\(勿忘記最后的\),方便調試與直接運行EXE(你可以按照自身的習慣修改);
5.VS2013解決方案,頭文件右鍵,選擇現有項。將CommonFiles里面的頭文件zconf.h / zlib.h加入工程,且在調用zlib函數的.cpp或者.h文件,使用C調用約定#include包含zlib.h文件(zconf.h不用包含);
6.VS2013解決方案,右鍵屬性,鏈接器,附加依賴項,編輯加入..\..\CommonFiles\zlibstat.lib;
6.1亦可以使用#pragma comment(lib, "..\\..\\CommonFiles\\zlibstat.lib"),你選擇喜歡的方法;
7.至此,我們使用zlib1.2.11靜態庫的環境已經搭好了,過程可以簡略很多,僅為了方便初學者。讓我們一起調用zlib官方的例子試試吧!
8.好事多磨,不是嗎?。鏈接器報錯說_compress與 _uncompress函數不認識。我們需要在VS2013解決方案,右鍵屬性,C/C++,預處理器定義,加入宏ZLIB_WINAPI,現在再編譯鏈接試試;
9.成功了,兩個警告,一個是zlib官方例子使用strcpy,微軟提示strcpy_s安全點;還有一個是LIBCMT沖突,可以在VS2013解決方案,右鍵屬性,鏈接器,輸入,忽略特定默認庫,編輯加入LIBCMT.lib,我們再重新生成項目看看;
10.執行EXE,成功壓縮與解壓縮。
11.使用zlib靜態庫,提示error LNK2026: 模塊對於 SAFESEH 映像是不安全的。可以在VS2013解決方案,右鍵屬性,鏈接器,命令行,加入/SAFESEH:NO,重新編譯鏈接生成EXE;
12.使用zlib靜態庫,編譯生成文件,提示warning LNK4099: 未找到 PDB“vc120.pdb”(使用“zlibstat.lib(adler32.obj)”...) ...,請將zlib1.2.11靜態編譯中的第12步,生成的vc120.pdb調試信息,拷貝到工程bin目錄或者公共文件CommonFiles目錄,重新編譯鏈接生成EXE就好了(請保證vc120.pdb與zlibstat.lib是同時生成的,.調試信息需要對應);
拷貝vc120.pdb之后,重新生成,無warning LNK4099;
13.發布Release版本,上方有的操作,需要重復。你可以根據編譯器或者鏈接器提示的錯誤,決定如何做。