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运行终于不报错了

你可能感兴趣的:(minizip,libzip)