我想在我的 C++ 程序中使用 libzip 从 zip 存档中提取文件。因此,首先,我获取其中的文件数量,获取它们的名称并阅读它们。要获取文件数,我使用“zip_get_num_entries”。它的原型是:
zip_uint64_t zip_get_num_entries(struct zip *, int)
以及我使用此功能的方式:
int nbrEntries(0);
zip *archive = zip_open("myZip.zip", 0, 0);
nbrEntries = zip_get_num_entries(archive, 0);
当我编写这段代码时,Code::Blocks 建议我使用 zip_get_num_entries,所以标题没有问题。但是当我编译时,编译器(MinGW)告诉我:
undefined reference to `_imp__zip_get_num_entries'
所以我尝试了它已弃用的等价物 zip_get_num_files 并且它有效。我将使用 CMake 制作的项目 libzip.dll.a 包括在内。我有两个文件:libzip.dll 和 libzip.dll.a。
我确定这是一个库问题(请注意,我在 MacOS 上没有这个问题),但我不知道如何解决这个问题。谢谢!
编辑:我搜索了他们的网站并读到当他们发布网站上可用的库时,zip_get_num_files 的实现是新的。所以我在他们的 Mercurial repo 中搜索并找到了 2 天前发布的版本(比网站上发布的版本更新了一点,它有将近 1 年)。我用 CMake 构建了它,它成功了!