3

主にGCCバージョンが新しいため、数日間MinGW-w64をシステムで動作させようとしていますが、設定が間違っているか、MinGW-w64自体に奇妙な問題があります。

i686-w64-mingw32-gcc-4.7.2-release-win32_rubenvb をダウンロードし、解凍して $PATH 環境変数C:/Dev/mingw-rubenにパスを追加しました。C:/Dev/mingw-ruben/bin

私が構築しようとしているのは、CMake ファイルに付属するSFML 2です。CMake を実行すると問題なく動作し、コンパイラが認識され、すべてのテストに合格します。CMake はar.exeC:/Dev/mingw-ruben/binフォルダー内の も検索します。MinGW Makefile を生成した後、Windows コマンド ラインに切り替えてmingw32-make install. 問題が発生する場所があります。エラーが発生します。

mingw-ruben\bin\ar.exe: mingw-ruben/lib/libopengl32.a: No such file or directory

またはネットワークライブラリの場合

mingw-ruben\bin\ar.exe: mingw-ruben/lib/libws2_32.a: No such file or directory

エラーは非常に明白なようで、チェックすると実際には nolibopengl32.aまたはlibws2_32.ainがありませんmingw-ruben/lib/が、ファイルは実際には にありますC:/Dev/mingw-ruben/i686-w64-mingw32/lib

では、ar/make/cmake に、mingw-ruben/libディレクトリだけでなく、mingw-ruben/i686-w64-mingw32/lib.

すべてのコンテンツをi686-w64-mingw32サブフォルダーからmingw-rubenルート フォルダーにコピーすることをお勧めしますか?

余談ですが、もう一度呼び出すことはできますmingw32-make installが、手順は続行されますが、アプリケーションを SFML にリンクしようとすると、glXYZSFML 内の関数に対して多くの未解決のシンボル エラーが発生します。

詳細情報: Windows 8 x64 を使用していますが、それは問題ではないと思います。はい、MSYS を試しましたが、問題は解決しません。

私は何か間違ったことをしていますか?特別に構成する必要がありますか?

4

2 に答える 2

2

2015年1月 編集

SFML 2.2 がリリースされたので、これはもはや問題ではなく、静的にリンクするときは SFML の依存関係を自分でリンクする必要があります。

2014 年 1 月 編集

コミット165f2b1888およびf784fe4c07の時点で、安定版 SFML 2.1 に含まれており、MinGW-w64 コンパイラがサポートされています。

しかし、さまざまな関係者とさらに話し合っているうちに、sfml_static_add_librariesマルコはかなり醜いハックであることが明らかになりました. つまり、静的な依存関係を展開し、それらの obj ファイルを SFML ライブラリ自体に含めました。これは、SFML が既に内部のものを使用していたため、独自のバージョンの GLEW を使用しようとしたときに最も顕著な問題でした。この問題はフォーラムに持ち込まれ、 Laurent が最終的に屈服し、依存関係をリンクする適切な方法を採用するまで、かなり長い間議論されました。つまり、自分で依存関係をリンクする必要があるということです。

commit dbf01a775bの時点で、これはSFML 2.1 の安定版には含まれていません。SFMLに対して静的にリンクする場合、finally アプリケーションで SFML 依存関係をリンクする必要があります。


オリジナル

IRC でチャットした後、私たちはそれを理解しました。MinGW とは関係ありませんが、すべて SFML のせいです。静的にリンクしながら SFML の依存関係リストを削減するために、開発者は各ライブラリ (opengl32、ws2_32、...) から手動でシンボルを抽出することにしました。実際のエラーは、開発者がライブラリがフォルダーにあると想定していたために発生しますmingw/libが、MinGW w64 では別のディレクトリmingw/version/libにありar.exe、ライブラリが見つかりませんでした。

解決

sfml_static_add_librariesマクロの呼び出しを削除してから再コンパイルします。その後、静的リンケージのすべての依存関係をリンクする必要があります。

于 2012-10-15T13:05:13.560 に答える
1

ダウンロードした gcc ディストリビューションの問題である可能性が高いと思います。

問題に少し光を当てると、ここでルーベンの質問が得られます。

https://unix.stackexchange.com/questions/45277/executing-binary-file-file-not-found

それはそれに関連しているように思えます(ただし、それはLinuxに関するものであり、勝ちではありません)

私は数ヶ月前にgcc 4.7.0 linux->win crosscompilerで同様の問題を抱えていました(欠落しているファイルの名前は異なりました)。したがって、今まで標準のubuntu mingw-w64パッケージを使用していましたが、昨日だけi686-w64-mingw32-gcc-4.7.2-release-linux64_rubenvb.tar.xzをもう一度試してみましたが、それ以外の場合は同じ環境で問題なく動作します以前のバージョンは「..ar.exe: ... no such file」で失敗していました。Windows でも開発することがありますが、http://www.mingw.org/を使用すると、Win でのセットアップがはるかに簡単になります。32 ビット ターゲットのみをサポートしていますが、私のプロジェクトでは十分です。

于 2012-10-14T11:58:41.390 に答える