如何构建libzip库?

时间:2015-08-20 18:05:49

标签: build libzip

尝试在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。

2 个答案:

答案 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
  • 以下是stackoverflow 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。

谢谢大家。