0

尝试在 Windows 10 x64 上构建它时遇到问题。

我的环境是

MingGW 3.20
CMake 3.3.0

libzip-1.0.1

我所做的是在libzip 站点下载项目,打开 CLion IDE(最新版本)并尝试编译。

整个构建过程有错误,可以在链接中找到。 http://pastebin.com/KTPtm5z3

许多未声明的变量显示为错误:

error: 'EOPNOTSUPP' undeclared (first use in this function)

是什么导致了这个问题,为什么?

我可以在此存储库镜像 repo libzip v0.9中毫无问题地编译库版本 libzip ,但我想要最新版本的 libzip。

4

2 回答 2

1

libzip 开发人员已经意识到这个问题,但似乎很难找到正确的修复程序,因为他们都不太熟悉 Windows 或 MinGW: http: //nih.at/listarchive/libzip-discuss/msg00559.html

我自己也不熟悉,但最近能够使用此答案在 Windows 7(没有 MinGW)上成功编译 libzip(另请参阅我对该答案的评论):https ://stackoverflow.com/a/30245321/784669

最后,由于您可能希望立即运行,请尝试执行以下操作:

  • 您对swprintfin的调用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它说只定义GetFileSizeExif _WIN32_WINNT >= 0x0500。也许您的 Windows 版本太旧或者您需要:

_

#define _WIN32_WINNT 0x0500

祝你好运!

于 2015-08-21T05:12:05.107 回答
1

使用邮件列表: http ://www.nih.at/listarchive/libzip-discuss/

在 Windows 上的构建过程中加入了一些更改。

结尾在这里 http://nih.at/listarchive/libzip-discuss/msg00574.html

最终的结果再好不过了!他们解决了所有问题,我可以在 Windows 中构建 libzip。

谢谢你们。

于 2015-08-22T22:42:33.200 回答