zlib1.2.11靜態庫使用


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版本,上方有的操作,需要重復。你可以根據編譯器或者鏈接器提示的錯誤,決定如何做。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM