C++ Libzip-Archive error始终返回ZIP_ER_OK,即使无法创建归档

C++ Libzip-Archive error始终返回ZIP_ER_OK,即使无法创建归档,c++,libzip,C++,Libzip,我正在使用switch语句检查我正在创建的libzip归档文件中错误代码的值。然而,它似乎永远不会返回除0以外的任何内容,即使我故意使它失败。我试图将文件复制到一个100%已满的usb驱动器,结果导致它失败 我在这里的用法怎么不正确 int error = 0; zip_t * zip = zip_open(externalDevicePath.c_str(), ZIP_CREATE, &error);

我正在使用switch语句检查我正在创建的libzip归档文件中错误代码的值。然而,它似乎永远不会返回除0以外的任何内容,即使我故意使它失败。我试图将文件复制到一个100%已满的usb驱动器,结果导致它失败

我在这里的用法怎么不正确

                int error = 0;
                zip_t * zip = zip_open(externalDevicePath.c_str(), ZIP_CREATE, &error);
                zip_add_dir(zip,(institutionId + DIR_SLASH + userId).c_str());

                string instAndUserPath = basePath + DIR_SLASH + institutionId + DIR_SLASH + userId;
                string stbackupPath = basePath + DIR_SLASH + "STBackups";

                ESFileUtilsCommon::addDirectoryToZip(instAndUserPath,zip,(institutionId + DIR_SLASH + userId).c_str());
                ESFileUtilsCommon::addDirectoryToZip(stbackupPath,zip,"STBackups");
                ESFileUtilsCommon::addDirectoryContentsToZip(basePath, zip);

                zip_close(zip);

                switch (error){
                case ZIP_ER_OK:         
                    mapper.setResult(RESULT_SUCCESS);
                    retval = CefV8Value::CreateString(mapper.getMappedJsonResponse());
                    return true;
                    break;
                default:
                    mapper.setResult(RESULT_FAILURE);
                    retval = CefV8Value::CreateString(mapper.getMappedJsonResponse());
                    return false;
                    break;
                }
您尚未提供,因此我们无法测试您的代码。然而,从您在zip_打开很久之后检查错误的事实来看,我认为您对libzip中的错误工作方式感到困惑

传递给zip_open的int错误只对zip_open负责,之后不会出现任何潜在错误。如果您想知道zip_dir_add是否有错误,您需要检查它自己的返回值,请参阅其文档:。您还可以使用zip\u get\u error函数检查最新错误,请参阅文档: