libzip 編譯 minizip 運行時 CreateFile2 無法在Kernel32定位

  1. 編譯libzip

    使用vs打開(我用的是2012)zlib-1.2.8\contrib\vstudio\vc11目錄下的zlibvs.sln,用這個會包含minizip代碼,如果只想壓縮和解壓內存數據,可以用cmake來編譯。
    編譯的時候會報:error LNK2026: 模塊對於 SAFESEH 映像是不安全的。解決辦法:右鍵 zlibvc-屬性-配置屬性-鏈接器-命令行 在後面加一行 /SAFESEH:NO
    之後還會報錯:.\zlibvc.def(4): fatal error LNK1118: “VERSION”語句中的語法錯誤。解決辦法,直接定位到該錯誤,刪除VERSION那一行即可

  2. 測試編譯的libzip

    直接編譯項目中的minizip,一次性通過
    然後copy libzip生成的zlibwapi.dll(在 x86\ZlibDllDebug目錄下)到x86\MiniZipDebug中,直接運行該文件夾下的minizip.exe報錯 CreateFile2 無法在Kernel32定位,沒有錯誤的直接忽略,說明可以用了。
    該錯誤解決辦法在iowin32.c 29行那段宏用 #if _WIN32_WINNT >= _WIN32_WINNT_WIN8 和 #endif包裹,然後右鍵 zlibvc-屬性-配置屬性-C/C++-預處理器定義中加入一行 _WIN32_WINNT=0x0601即可,重新編譯,並copy zlibwapi.dll之後 minizip.exe運行終於不報錯了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章