0

Windows の Code::Blocks で使用するために、zlib と libzip を Cygwin でコンパイルしました。私のコードは次のとおりです。

#include <iostream>
#include <zip.h>

int main()
{
    //Open the ZIP archive
    int err = 0;
    zip *z = zip_open("main.zip", 0, &err);
    zip_close(z);

    std::cout << "Hello world!" << std::endl;

    return 0;
}

コードをビルドすると、問題なく動作し、エラーや警告は発生しません。

プログラムを起動すると、cygzip-2.dll がないと表示されます。わかりました、検索して実行可能フォルダーに入れます。次に、cygwin1.dll がないと表示されます。よし、私も入れた。cygz.dll と cyggcc_s-1.dll についても同様です。

ああ、それは動作します!しかし、その後、私のプログラムは常に同じステータスで停止します: -1073741819. こんにちはとさえ言ってくれません:(

MinGW でコンパイルし (Cygwin でも同じエラーが発生しました)、libz.a、libzip.a、および libzip.dll.a をリンクしました。問題はどこから発生する可能性がありますか?

ありがとう!

編集: Cygwin でプログラムをコンパイルしようとすると、 「'_ zip_open ' への未定義の参照」および「'_zip_close' への未定義の参照」と表示されます。おそらく何かが欠けていますが、何ですか?

4

1 に答える 1

0

最終的に、2つのライブラリを使用することに成功しました。私はすでにCMakeを使おうとしましたが、惨めに失敗しました。

そこで本日、GUIで再試行することにしました。まず、zlibをコンパイルしました。zlibフォルダーを選択し、その中にビルドフォルダーを配置しました。Code ::BlocksとMinGWMakefiles、およびネイティブコンパイラのオプションを使用して構成しました。次に、「build」フォルダーにある.cbp(Code :: Blocks Project)を開いて、ビルドしました。

libzipの場合、2つの変数を指定した以外の手順を実行しました。

ZLIB_INCLUDE_DIR = zlibフォルダーのルート(すべての.hと.cがあります)およびZLIB_LIBRARY=[zlibからビルドフォルダーへのパス]\libzlib.dll

私も.cbpから構築しました。そして、すべてのファイルをプロジェクトにリンクしました。これで完了です。

于 2013-01-31T17:30:54.480 に答える