0

Windows 10 x64 でビルドしようとすると問題が発生します。

私の環境は

MingGW 3.20
CMake 3.3.0

libzip-1.0.1

私がしたことは、libzip サイトでプロジェクトをダウンロードし、CLion IDE (最終バージョン) を開いてコンパイルを試みることでした。

エラーのあるビルドプロセス全体は、リンクにあります。 http://pastebin.com/KTPtm5z3

宣言されていない変数の数がエラーとして表示されます。

error: 'EOPNOTSUPP' undeclared (first use in this function)

この問題の原因とその理由は?

このリポジトリミラー リポジトリ libzip v0.9で問題なくライブラリ バージョン libzip をコンパイルできますが、libzip の最新バージョンが必要です。

4

2 に答える 2

1

メーリング リストの使用: http://www.nih.at/listarchive/libzip-discuss/

Windows でのビルド プロセスにいくつかの変更が組み込まれました。

ここでエンディング http://nih.at/listarchive/libzip-discuss/msg00574.html

最終結果はこれ以上ありません! 彼らはすべての問題を解決し、Windows で libzip をビルドすることができました。

皆さん、ありがとうございました。

于 2015-08-22T22:42:33.200 に答える
1

libzip 開発者はこの問題を認識していますが、どちらも Windows や MinGW に精通していないため、適切な修正を見つけるのに苦労しているようです: http://nih.at/listarchive/libzip-discuss/msg00559.html

私はどちらにも慣れていませんが、最近、この回答を使用して Windows 7 (MinGW なし) で libzip を正常にコンパイルできました (その回答に対する私のコメントも参照してください): https://stackoverflow.com/a/30245321/784669

最後に、今すぐ実行したい場合があるため、次のことを試してください。

  • swprintfinへの呼び出しlib/zip_source_win32w.c、36 行目、関数の 2 番目の引数を削除してみてlenください。コンパイラは古いバージョンのswprintf
  • GetFileSizeEx(クレジット: https://sourceforge.net/p/tdm-gcc/bugs/250/ )の一時的な実装として次のコードを配置します。

_

bool GetFileSizeEx(HANDLE hFile, PLARGE_INTEGER fsize){
    LPDWORD tSize;
    DWORD t = fsize->HighPart;
    *tSize = t;
    int ret = GetFileSize(hFile, tSize);
    fsize->HighPart = *tSize;
    delete tSize;
    return ret;
}
  • GetFileSizeExまた、stackoverflow からの別の提案は次のとおりです。 https://stackoverflow.com/a/28028376/784669したがって、問題は Windows のバージョンにある可能性があります。確かに、ifwinbase.hのみを定義するように言われています。Windows のバージョンが古すぎるか、次のことを行う必要がある可能性があります。GetFileSizeEx_WIN32_WINNT >= 0x0500

_

#define _WIN32_WINNT 0x0500

幸運を!

于 2015-08-21T05:12:05.107 に答える