問題タブ [lnk2005]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 継承されたクラスで同じ .h ファイルを使用すると C++ リンカ エラーが発生する
ClassA と ClassB の 2 つのクラスがあります。ClassB は ClassA を継承します。メソッドを使用できるように、classa.cpp と classb.cpp の両方に utility.h-header ファイルが含まれています。
両方の .cpp ファイルの utility.h から。
次のように ClassA で使用する場合:
それは正常に動作します。しかし、次のように ClassB で使用しようとすると:
リンカーは私にエラーを与えます:
そして、私はこれがなぜなのか理由を見つけることができないようです.
前もって感謝します。
編集:Utilities.hにはこれのみが含まれていることを追加
linker - LNK2005/LNK2006 (シンボルの重複) を回避するには?
残念ながらシンボルを重複して定義している 2 つのオブジェクト ファイル (ソース コードを持っていない) にリンクする必要がある状況があります。この問題を回避する合理的な方法があるのだろうか?
別の質問/FORCE
では、出力を生成するためにを使用するという提案がありましたが、 を使用する/FORCE
と、状況をほとんど制御できないことにも言及されました。使用されるシンボルのどれが未定義であるかだけでなく、意図せずに重複したシンボルがサイレントに通過することも意味します (これはエラーになる可能性があります)。
私が望むのは、と の両方でfoo
定義されていることを知っていることをリンカに伝え、にあるものを無視することになっていることです。このようにして、コードベースの 2 か所で定義した場合、または誤って他のオブジェクト ファイルで定義した場合でも、エラーとして診断する必要があります。bar.obj
baz.obj
baz.obj
qux
foo