2012-01-06 10 views
3

しばらくの間、私は書いた小さなファイルのコレクションを使用して、WinAPIとのインターフェースを簡単にしました。しかし、ファイルを再利用したいときや再コンパイルするのを待っているときなど、ファイルを移動し続けるのは苦痛になります。私は最終的にDLLに投げ込んで終了することにしましたが、ライブラリを使用しようとするたびに奇数のリンクエラーが発生します。_Unwind_Resumeの複数定義

エラーは、実際に定義が実際にどこから発生したかに関する情報をほとんど提供しないタイトルと同じように具体的です(私が知っている限り、そのような情報は実際にはDLLから収集できないためです)。誰かがこのエラーの原因となるものを正確に説明してもらえますか、問題にいくつかの修正を加えることができますか?

私はMinGW(SFMLサイトで提供されているのと同じバージョン、4.4)をCode :: Blocksとともに使用しています。それ以上の情報が必要な場合は、私はそれを提供するために最善を尽くします。

答えて

0

_Unwind_Resumeという名前のシンボル(関数または変数)に複数の定義があるという問題があります。

DLLはそのような名前をエクスポートしています。目的のシンボルだけが公開されるように再構築します。明らかに、すべてのパブリックシンボルがエクスポートされて構築されています。

+0

私はMinGWがこれをデフォルトで実行していることに気付きました。これは過去に私に混乱をもたらしました。あなたはそれをしないように強制する方法を知っていますか? – B3tturTh3nU

+0

@ B3tturTh3nU:ツールによって異なります。 MSオプションに似たツールは、[linker '.def'(definitions)ファイル](http://msdn.microsoft.com/en-us/library/28d6s79h%28v=vs.71%29.aspx)をサポートしています。 Borlandはこれを直接サポートしています。しかし 'gcc'では、ほぼ確実にコマンドラインオプションです。 – wallyk