1

私は C/C++ プログラミングにまったく慣れていないので、それを考慮してください。

問題 :

libzip ライブラリを使用する場合、マニュアルに記載されている関数の一部は、コンパイル時にスコープで宣言されていないと言われています。2011 年に書かれたこのチュートリアル(フランス語で申し訳ありません)を読みました。異なる関数名を使用しています (zip_dir_add は zip_add_dir などです)。

取り付け方法によるものと思われます。または、いくつかのファイルを含めるのを忘れたのかもしれません..

これが私がこれまでに行ったことです:

1)次のようなubuntuパッケージを使用してlibzipライブラリをインストールします:

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 はこのスコープで宣言されていません

何が原因でしょうか?

前もって感謝します !

4

3 に答える 3

2

あなたはそれを自分で書きました:zip_dir_add実際にはそうあるべきですzip_add_dir-または私は誤解しましたか?

編集:libをざっと見ただけです-確かに存在しますがzip_dir_add、内部です。外部宣言されたラッパーはzip_add_dir.

EDIT2: もう一度見てから、今度は <zip.h> に入ります。そこでzip_add_dirは、「非推奨」とマークされzip_dir_addており、進むべき道のようです。

あなたのコンパイラはあなたのものではなく zlib のものを含めようとしているのではないかと心配していますzip.h

あなたがLinuxを使用しているので(明らかに)、前述のように、より普及しているいくつかのライブラリに切り替えることをお勧めしますzlib(これには が含まれておりminizip、おそらく必要なものです)。ここで読んでください

于 2014-09-25T09:16:33.057 に答える
1

機能はint zip_add_dir(); お試しください。それはうまくいくはずです。

于 2014-09-25T09:38:27.077 に答える