2012-06-29 18 views
5

私はこれに似た質問を既に聞いていますが、私はこの問題を何時間も修正することができませんでした。Mingw _Unwind_resumeの多重定義

私は基本的に私はDLLとそれを呼び出すアプリケーションを持っています。すべてうまく動作しますが、開発環境外の2つを取ると、libgcc_s_dw2 1.dllがコンピュータに存在しないため、プログラムを開始できないというメッセージが表示されます。

これは開発用コンピュータではないと考えれば十分です。したがって、配布のために、コンパイラフラグ "-static-libgcc -static-libstdc++"を追加しました。私はdllとアプリケーションのためにこれを行いました。

しかし、私は、私はエラーを取得するアプリケーションのコンパイル時に:

"multiple definition of `_Unwind_Resume'"

を、私は、これはDLLとそれらに組み込まれた静的ライブラリを持つアプリケーションの両方によるものだと思ったし、それがあります。しかし、それらの両方に静的ライブラリが組み込まれていない場合、プログラムはエンドユーザマシン上で実行されません。

mingwライブラリに依存しないままこのエラーを取り除くにはどうすればよいですか?私のIDEはCode :: Blocksです。

デビッド

EDIT:DLLにリンクするアプリケーションを構築するときに、ここでは、ビルドログです:

c:/mingw/bin/../lib/gcc/mingw32/4.6.2/libgcc_eh.a(unwind-dw2.o):(.text+0x298c): multiple definition of `_Unwind_Resume' 

..\EquilibriumEngine\bin\Release\libEquilibriumEngine.dll.a(d000015.o):(.text+0x0): first defined here 

collect2: ld returned 1 exit status 

Process terminated with status 1 (0 minutes, 0 seconds) 

2 errors, 0 warnings 
+0

あなたはどんなログコードを追加することができ::ブロックは、ビルドのために持っている(に沿って/リンクをコンパイルするために使用されるコマンドが含まれて何かどのような警告とエラーが発生したとしても)? –

+2

おそらく、この回答は、何が間違っているかのヒントを与えるhttp://stackoverflow.com/questions/8765215/multiple-definitions-of-unwind-resume – Arnestig

答えて

1

リンカフラグのみ-staticを繰り返してください。しかし、(可能であれば)あなたのexeにlibgcc_s_dw2 1.dllを含め、両方を配布してください。あなたはMinGW/binフォルダからdllを得ることができます。

-static-libgccをコンパイラに追加しないでください。リンカ -flags!

0

しばしば作品の一つハックの回避策は、あなたのリンカのフラグにこれを追加することです:

-Wl,-allow-multiple-definition 
関連する問題