libzip 开发人员已经意识到这个问题,但似乎很难找到正确的修复程序,因为他们都不太熟悉 Windows 或 MinGW: http: //nih.at/listarchive/libzip-discuss/msg00559.html
我自己也不熟悉,但最近能够使用此答案在 Windows 7(没有 MinGW)上成功编译 libzip(另请参阅我对该答案的评论):https ://stackoverflow.com/a/30245321/784669
最后,由于您可能希望立即运行,请尝试执行以下操作:
- 您对
swprintf
in的调用lib/zip_source_win32w.c
,第 36 行,尝试删除该函数的第二个参数,len
因为您的编译器似乎假定了旧版本swprintf
- 将以下代码作为临时实现
GetFileSizeEx
(来源:https ://sourceforge.net/p/tdm-gcc/bugs/250/ ):
_
bool GetFileSizeEx(HANDLE hFile, PLARGE_INTEGER fsize){
LPDWORD tSize;
DWORD t = fsize->HighPart;
*tSize = t;
int ret = GetFileSize(hFile, tSize);
fsize->HighPart = *tSize;
delete tSize;
return ret;
}
- 这是
GetFileSizeEx
来自 stackoverflow 的另一个建议:https ://stackoverflow.com/a/28028376/784669所以问题可能出在您的 Windows 版本上。事实上,winbase.h
它说只定义GetFileSizeEx
if _WIN32_WINNT >= 0x0500
。也许您的 Windows 版本太旧或者您需要:
_
#define _WIN32_WINNT 0x0500
祝你好运!