zlib 2.1.8 編譯遇到的問題以及解決方法


環境:win7 x64 + vs2013

1.用vs2013打開zlib-1.2.8\contrib\vstudio\vc11\zlibvc.sln進行編譯

包含了下面的的多個項目:

miniunz:一個解壓的測試例子(下面所使用的測試使用用例)

minizip:一個壓縮的測試例子

testzlib:使用zlib靜態庫,並測試壓縮/解壓效率

testzlibdll:使用zlib動態庫,並測試壓縮/解壓效率

zlibstat:生成zlib靜態庫的項目

zlibvc:生成zlib動態庫的項目

 

2.error LNK2026: 模塊對於 SAFESEH 映像是不安全的。

解決辦法:

①zlibvc-屬性-配置屬性-鏈接器-命令行 在后面加上 /SAFESEH:NO

②testzlib-屬性-配置屬性-鏈接器-命令行 在后面加上 /SAFESEH:NO

 

3.fatal error LNK1118: “VERSION”語句中的語法錯誤

解決辦法:找到報錯位置,zlibvc.def文件第4行的VERSION語句行,直接刪除該行或者在行首加上;號進行注釋。

 

 4.成功編譯后

①項目生成的文件都在zlib-1.2.8\contrib\vstudio\vc11\x86\

②將zlib-1.2.8\contrib\vstudio\vc11\x86\ZlibDllDebug中的zlibwapi.dll拷貝到MiniUnzipDebug文件夾中

③在命令窗口cmd中運行miniunz.exe

 

5.報錯:無法定位程序輸入點CreateFile2於動態鏈接庫KERNEL32.dll上

解決辦法:

①找到iowin32.c文件,在對應位置上增加宏判斷#if _WIN32_WINNT >= _WIN32_WINNT_WIN8 和 #endif

②不要忘記這一步!!!

zlibvc-屬性-配置屬性-C/C++-預處理器定義 加入一行 _WIN32_WINNT=0x0601

 

6.

①清理解決方案!!!

②重新編譯拷貝zlibwapi.dll到MiniUnzipDebug文件夾中

③在命令窗口cmd中運行miniunz.exe,正常運行並顯示命令列表,如下(表示已經可以正常運行):

 

7.使用miniunz.exe對一個壓縮文件1.zip進行解壓測試,出現錯誤Cannot open 1.zip or 1.zip.zip錯誤,如下圖

 

解決辦法有兩種:

第①種:屏蔽miniunz.c中對應的代碼,重新編譯miniunz項目

第②種:將iowin32.c文件第247行與374行的 FILE_CURRENT 都改為 dwMoveMethod即可,重新編譯拷貝zlibwapi.dll

 

參考博客鏈接:

http://blog.csdn.net/drecik__/article/details/50342357

http://blog.csdn.net/drecik__/article/details/50372998

 


免責聲明!

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



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