問題タブ [libzip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - libzip: ロード前に zip ファイルを検証する
アプリケーションで libzip を使用して zip ファイルを開き、zip ファイルが破損した場合に適切な動作を確保するために、手動で zip ファイルを破損し (テキスト エディターでランダムな行をいくつか削除して)、そのファイルを読み込もうとしました。ただし、zip_fread() が返されないため、アプリ全体がハングします。
このような状況を回避するために、ロードする前に zip ファイルが有効かどうかを判断する場所はありますか?
アップデート
動作はバージョンに依存しているようなので、おそらく更新するだけで済みます。これは、Windows、Mac OS、および Linux で使用するコードです。
OS X では、このフラグメントはエラーを返しません(すべてのプラットフォームで同じファイルを使用しました)。代わりに、次の zip_read() 呼び出しがハングします。他のプラットフォームでは、zip_read() はすぐに < 0 の結果を返すため、そこでエラーをキャッチするのは簡単です。
windows - ライブラリの libzip Windows コンパイル
他のプロジェクトで libzip を使用するには libzip.lib .h が必要です。したがって、Visual Studio 2010で libzip に従いましたが、ステップ 11 までは問題ありませんでした。 :
初め :
2> zip_set_file_compression.c
2>....\lib\zip_set_file_compression.c(63): エラー C2275: 'zip_int32_t': この型を式として使用することに準拠していません
2> C:/devel/libzip-0.11.1/lib\zipconf.h(33) : 「zip_int32_t」の宣言を参照
2>....\lib\zip_set_file_compression.c(63): エラー C2146: 構文エラー: ';' がありません 識別子「old_method」の前
2>....\lib\zip_set_file_compression.c(63): エラー C2065: 'old_method': 宣言されていない識別子
2>....\lib\zip_set_file_compression.c(67): エラー C2065: 'old_method': 宣言されていない識別子
ソースファイルを何も変更していないので...わかりません。ファイルを確認して確認しますが、変更したくないので何も機能しません!
そして第二に:
リンク: 致命的なエラー LNK1181: ファイル '..\lib\Release\zip.lib' を開けません
実際、私は zip.lib ファイルを持っていません! どこで入手できますか?手順 1 ~ 10 のいずれかで作成/生成する必要がありますか? ウェブ上で入手する必要がありますか?
android - アンドロイド NDK. libzip はサブフォルダーに停止しました
libzip
APK コンテンツをネイティブ コードで読み取るために使用します。
assets/sounds/voice
libzip関数のみのフォルダ「消えた」。
libzip
まだ他のファイルが表示されます。assets/sounds/voice
プロジェクトフォルダーでまだ見ることができます。- 私は
clean
何度もやった。 APK
フォルダからファイルを解凍でき、bin
必要なファイルがすべて表示されます。assets/sounds/voice
(フォルダ内のファイルを含む)
小さなロギング コマンドを追加しましたが、フォルダーからファイルを印刷しませんassets/sounds/voice
。他のすべてのファイルが存在します。
どの段階で何が間違っているのかわかりません。libzip が読み取れない新しい形式の Eclipse 圧縮 ZPK がありましたか? または何が理由である可能性があります。
c++ - ZIP アーカイブ圧縮レベル (libzip) の作成
libzip を使用してファイルを圧縮しようとしていますが、成功しているように見えますが、再実装する必要がある圧縮レベル (zip ツールは 1 (最速の圧縮速度) から 9 (最小のアーカイブ) までの値をサポートしています) を変更する方法がわからないようです。 . そうする方法はありますか?
c++ - libzip がファイルを閉じることができません
現在、C++ 11 プログラムで libzip を使用して、圧縮ファイルの内容を抽出し、ファイルに関連するメタデータも保持するデータ構造に格納しています。
現在の方法を使用して、zip ファイルを展開し、その中の各ファイルのコンテンツを取得しています。
私の問題は、gdbが次を指しているときにランダムなセグメンテーション違反が発生することzip_fclose(file);
です:
これをデバッグする最良の方法は何ですか? 私が言ったように、断続的に発生するため、正確な原因を特定するのは困難です.
android - APK アセットが Kindle Fire HD にロードされない
Amazon Kindle Fire HD 用のアプリを開発しました。配布中に、ほとんどすべての Kindle 端末で実行されず、黒い画面が表示されるというレポートを amazon から受け取りました。logcat ログ ファイルが送られてきて、一部のアセットを APK ファイルから直接ロードできないことがわかりました (C++、zlib、libzip 経由でアクセス)。
Eclipse から起動すると、すべて正常に動作します。
何がうまくいかないのですか?ありがとう!
アップデート:
に関係していることが分かりましたzip_open()
。この呼び出しは失敗し、戻りますZIP_ER_INCONS
c++ - マニュアルの libzip zip_dir_add が宣言されていない - C/C++
私は C/C++ プログラミングにまったく慣れていないので、それを考慮してください。
問題 :
libzip ライブラリを使用する場合、マニュアルに記載されている関数の一部は、コンパイル時にスコープで宣言されていないと言われています。2011 年に書かれたこのチュートリアル(フランス語で申し訳ありません)を読みました。異なる関数名を使用しています (zip_dir_add は zip_add_dir などです)。
取り付け方法によるものと思われます。または、いくつかのファイルを含めるのを忘れたのかもしれません..
これが私がこれまでに行ったことです:
1)次のようなubuntuパッケージを使用してlibzipライブラリをインストールします:
2) 簡単なコードで試す
これは次を返します: zip_dir_add はこのスコープで宣言されていません
何が原因でしょうか?
前もって感謝します !
c++ - C++ Libzip + 削除 = コア ダンプ
libzip の使用時に問題があります。私はLinuxを使用しており、使用してライブラリをインストールしましたsudo apt-get install libzip2 libzip-dev
(したがって、最新バージョンではありません)。
これが私のコードです:
このコードは、filesToZip フォルダー内の 2 つのファイルを取得し、filesZip フォルダー内の zipTest ファイルに圧縮することになっています。
これを行うには、最初に zipTest ファイルが既に存在するかどうかを確認します。もしそうなら、それはそれを削除します。次に、zip アーカイブを開き、追加するファイルを圧縮してアーカイブに追加してから、アーカイブを閉じます。
だから私の問題は:
zip アーカイブ filesZip/zipTest が存在しない場合、問題なく動作します。zip アーカイブ ファイル Zip/zipTest が存在する場合、コア ダンプが発生します。
私がこれまでに試したこと:
- ファイルの名前に文字列を使用していたためだと思いました。char で試しましたが、何も変わりませんでした
- 次に、削除タスクが完了していないため、競合が発生する可能性があると考えました。したがって、各関数呼び出しの後に (秒単位で) sleep(180) を配置します。何も変わらなかった
- また、アーカイブにファイルを 1 つだけ入れようとしました。何も変更しませんでした
- 何が起こっているのかを確認するために gdb を実行しました。zipアーカイブがすでに存在する場合と存在しない場合の両方を試しました。
- アーカイブがまだ存在していなかった場合: 戻り値 0 まですべてがスムーズに進み、プログラムが fileToZip と fileToZip2 を再定義し、別の戻り値 0 を実行してから停止することがわかりました。
- アーカイブが既に存在する場合: 同じことを行いますが、現在の関数の境界が見つからないと言います。(私はここで、gdbにデバッグ情報がなく、それに不満があることを意味することを読みました..)
私の問題は何か分かりますか?