Я довольно новичок в программировании на C / C ++, поэтому, пожалуйста, примите это во внимание.
Проблема:
При использовании библиотеки libzip некоторые функции, описанные в руководство Говорят, что не были объявлены в области при компиляции.
Я читаю это руководство (по-французски извините), который был написан в 2011 году. Он использует разные имена функций (zip_dir_add — это zip_add_dir и т. д.)
Я думаю, что это может быть связано с процессом установки. Или, может быть, я забыл включить некоторые файлы ..
Вот что я сделал до сих пор:
1) установка библиотеки libzip с использованием пакетов ubuntu, например:
sudo apt-get install libzip-dev libzip2
2) примерить простой код
#include <iostream>
#include <zip.h>
using namespace std;
int main()
{
struct zip *zip;
int err(0);
zip = zip_open("testzip.zip", ZIP_CREATE, &err);
zip_dir_add(zip, "upld");
zip_close(zip);
return 0;
}
Это возвращает: zip_dir_add не был объявлен в этой области
Есть идеи, что может вызвать это?
Заранее спасибо !
Ваш вопрос состоит из 2 частей: 1, почему zip_dir_add не компилируется, а в документации предлагается использовать zip_dir_add, так как zip_add_dir устарел. Ответ может заключаться в том, что вы имеете в виду другую версию кода и другую версию документации. Для перекрестной проверки перейдите по пути включения libZip и откройте zip.h и проверьте zip_dir_add, который вы не найдете.
Второй вопрос: почему zip_add_dir создает пустой архивный файл? Ответ таков: когда вы добавляете каталог в zip_add_dir, он НЕ добавляет автоматически все файлы (под каталогом) в архив, вам нужно пройтись по каталогу и добавить отдельные файлы, используя zip_add.
Вы написали это сами: zip_dir_add
на самом деле должно быть zip_add_dir
— или я неправильно понял?
РЕДАКТИРОВАТЬ: только что взглянул на библиотеку — действительно, существует zip_dir_add
, но это внутреннее. Внешне заявленная обертка zip_add_dir
,
EDIT2:
После еще одного взгляда, на этот раз в <zip.h>, Там, zip_add_dir
помечен как «устарел» и zip_dir_add
кажется, путь.
Я боюсь, что ваш компилятор пытается включить ZLIB zip.h
а не твой.
Поскольку вы работаете в Linux (очевидно), я бы порекомендовал перейти на какую-то более распространенную библиотеку, например, упомянутую выше. zlib
(который включает в себя minizip
и это скорее всего то что нужно). Читать дальше Вот!
Функция int zip_add_dir();
Попытайся. Он должен работать.