環境: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