1

ほぼ3日間、mingwを使用してCodeBlocksでブーストライブラリが正しく機能するようにしようとしています。私が自分で解決することができた多くの問題の間に、今私は立ち往生していて、それは私を怒らせています。

さまざまなフラグを送信してライブラリを何度も構築しましたbjamが、CodeBlocksでこれらのライブラリを使用するたびに同じ結果が得られます。との行がたくさん

undefined reference to `___gxx_personality_sj0'
undefined reference to `__Unwind_SjLj_Register'
undefined reference to `__Unwind_SjLj_Resume'
undefined reference to `__Unwind_SjLj_Unregister'

人々が私を激しく非難し始める前に、私はここに来る前に問題を探しました。ほとんどすべてのスレッド(ここここと他のスレッド)は、この問題はブーストがコンパイラーで構築されたという事実から来ていると言っています、そして今私はCodeBlocksで別の異なるコンパイラーを使おうとしています。私は何度も何度もチェックしましたが、MinGW使用できるインストールは1つだけです。変数を確認Pathしましたが、不要なものは何もありません。使用したいMinGWのbinフォルダーのみです。QTをインストールしていないので、そこから2番目のMinGWはありません。また、 MinGWがバンドルされていないCodeBlocksをダウンロードしました。

以下に、私が実行する手順を示します。

1)bootstrap.bat mingwbjamを構築します

2)ここbjam --toolset=gcc "--prefix=<installpath>" installに述べられているように

3)ステップ2)のリンクから残りのステップに従います。

4)、、、、および(ここから取得したBoost.Logの依存関係)を追加Boost.FilesystemしますBoost.SystemBoost.DateTimeBoost.ThreadBoost.Regex

5)この例をコピーして貼り付けます

ビルドしようとしたときにCodeBlocksが使用するコマンド:

mingw32-g++。exe-Wall-fexceptions -g
-ID:\ libs \ boost \ include \ boost-1_51 -c D:\ example \ example \ main.cpp -o obj \ Debug \ main.o

mingw32-g++。exe-LD:\ libs \ boost \ lib -o bin \ Debug \ example.exe obj \ Debug \ main.o D:\ libs \ boost \ lib \ libboost_filesystem-mgw44-mt-d-1_51.a D:\ libs \ boost \ lib \ libboost_system-mgw44-mt-d-1_51.a D:\ libs \ boost \ lib \ libboost_date_time-mgw44-mt-d-1_51.a D:\ libs \ boost \ lib \ libboost_thread -mgw44-mt-1_51.a D:\ libs \ boost \ lib \ libboost_regex-mgw44-mt-d-1_51.a D:\ libs \ boost \ lib \libboost_log_setup-mgw44-mt-d-1_51.a

他に何がこれの原因である可能性がありますか?

後で追加:

CodeBlocksツールチェーンの実行可能ファイルは次のとおりです。

c++ compiler: mingw32-g++.exe
linker for dynamic libs: mingw32-g++.exe
linker for static libs: ar.exe

すべての.EXEは本来あるべき場所にありますが、この情報を追加すると、おそらく重要になります。

4

1 に答える 1

0

問題を修正しました。Mankarse私がチェックしたgccバージョンについて尋ねられた後、それはlibs(4.4)をコンパイルするために使用されたものと同じでした。最新バージョン(4.7)にアップグレードして、再試行することにしました。更新した後、コンパイルされたライブラリmgw44の名前がまだ残っていることに気づきました。これにより、2番目のmingwがインストールされたのではないかと思いました。

Path変数にあるすべてのフォルダーを確認した後、数週間前にインストールしたStrawberryPerlにもgccのバージョンがバンドルされているという結論に達しました。それを削除してsctratchからブーストを再構築した後、エラーは消えました。

今後の参考のために、誰かがこの問題に再び遭遇し、彼が1つのmingwしかないことを確認した場合は、次のようにもう一度確認してください。

  1. Path変数からmingwexesを含むbinフォルダーを削除します

  2. コマンドプロンプトを開き、と入力しますg++。それがそのようなことを言うならg++: fatal error: no input files、あなたは複数のmingwインストールを持っています。

于 2012-08-22T22:48:11.913 に答える