symbol already defined in object; second definition ignored
The given symbol, displayed in its decorated form, was multiply defined. When this warning is encountered, symbol will be added twice, but only its first form will be used.
You can get this warning if you try to merge two import libs into one.
Tips
- The given symbol may be a packaged function, created by compiling with /Gy. This symbol was included in more than one file but was changed between compilations. Recompile all files that include the symbol.
- The given symbol may have been defined differently in two member objects in different libraries.
- An absolute may have been defined twice, with a different value in each definition.
- If the error message is received when combining libraries, symbol already exists in the library being added to.
If you are rebuilding the C run-time library, you can ignore this message.
で、原因はどうやら上の赤字の部分。十数分悪戦苦闘した結果、ライブラリを作成中に、static libraryをリンクするようにしていたことが問題だと発覚。
static link libraryを作るプロジェクトAとBがあって、両者はともに同じファイルCを参照しています。しかし、Cの実体(*.cpp)は、Aに含まれていま す。 すると、Bをlibraryとしてbuildするときに、Aで作成されたライブラリをリンクするように設定していたため、Bの中に、Aで定義されたCと、 BでincludeしたCが混ざってでてきてしまいました。 これがlnk4006の原因。
落ち着いて考えるとなんてことないし、まさにヘルプに書いてある通りのwarningがでているのだけれど。。。
日記さぼるとランキングがすぐにさがってしまいます(T-T)
0 件のコメント:
コメントを投稿