【问题标题】:zip_open gives an unknown errorzip_open 给出未知错误
【发布时间】:2015-12-17 23:26:45
【问题描述】:

我正在使用 libzip,但我什至无法使用它。我想创建一个新的 zip 文件。

zip_open("/path/to/my.zip", ZIP_CREATE, &err)

给我这个错误代码:-858993460

我编译了 zlib,然后自己成功地进行了 libzip(因为我没有收到任何错误),以便在 Visual Studio 中进行调试和发布。我按照this link 的指示进行操作。

我错过了什么?

【问题讨论】:

  • 您错过了阅读说明错误代码含义的文档。
  • 如何获取错误信息?特别是err是如何初始化的,又是如何打印出来的?
  • -858993460 是 0xCCCCCCCC,这是 VS 在调试模式下初始化内存的值。这可能意味着err 根本没有被zip_open 调用改变。尝试在调用之前将err 设置为 0,以验证它是否被更改。 zip_open 是否返回 NULL 表示发生错误?
  • 如果我将 0 设置为 err,则不会更改。那么这真的意味着没问题吗?但是,zip_source_filezip_file_add 仍然没有将文件添加到存档中。
  • 好的,我知道为什么它没有创建 zip。这是因为zip_source_file 的长度参数。它必须为 -1 才能处理整个文件。

标签: c++ visual-studio-2015 libzip


【解决方案1】:

感谢 cmets 在我的问题中解决了我的问题。事实上,我的工作是有效的。只是err变量必须初始化为0,因为当没有错误时,err不会自动更新。如果没有初始化,VS 会自己处理0xCCCCCCCC,实际上是十进制的-858993460

所以代码应该是这样的:

int err = 0;
zip_t *myzip = zip_open("/path/to/my.zip", ZIP_CREATE, &err);

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 1970-01-01
    • 2022-01-20
    • 2018-11-24
    • 2014-05-30
    • 2019-01-22
    • 1970-01-01
    • 2019-03-30
    相关资源
    最近更新 更多