尝试在Windows 10 x64上构建时遇到问题。
我的环境
MingGW 3.20
CMake 3.3.0
libzip-1.0.1
我所做的是在libzip site下载项目,打开CLION IDE(最新版本)并尝试编译。
可以在链接中找到有错误的整个构建过程。 http://pastebin.com/KTPtm5z3
许多未声明的变量显示为错误:
error: 'EOPNOTSUPP' undeclared (first use in this function)
导致此问题的原因是什么?
我可以在此存储库mirror repo libzip v0.9中编译库版本libzip而没有任何问题,但我想要最新版本的libzip。
答案 0 :(得分:1)
libzip开发人员已经意识到这个问题,但似乎很难找到正确的解决方案,因为他们都不熟悉Windows或MinGW:http://nih.at/listarchive/libzip-discuss/msg00559.html
我自己并不熟悉,但最近能够使用这个答案在Windows 7(没有MinGW)上成功编译libzip(另见我对该答案的评论):https://stackoverflow.com/a/30245321/784669
最后,由于您可能希望立即运行,请尝试执行以下操作:
swprintf
第36行lib/zip_source_win32w.c
的调用,尝试删除函数len
的第二个参数,因为您的编译器似乎假设{{1}的旧版本} swprintf
的临时实施(credit:https://sourceforge.net/p/tdm-gcc/bugs/250/):_
GetFileSizeEx
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;
}
的另一个建议:https://stackoverflow.com/a/28028376/784669所以问题可能是你的Windows版本。确实在GetFileSizeEx
中,它只表示winbase.h
GetFileSizeEx
。也许您的Windows版本太旧或者您需要:_
_WIN32_WINNT >= 0x0500
祝你好运!
答案 1 :(得分:1)
使用邮件列表: http://www.nih.at/listarchive/libzip-discuss/
Windows上的构建过程中包含了一些更改。
这里的结局 http://nih.at/listarchive/libzip-discuss/msg00574.html
最终结果再好不过了!他们解决了所有问题,我可以在Windows中构建libzip。
谢谢大家。