Ich bin gerade (ziemlich kaum) von einer nicht trivialen Warnung aus Visual Studio 2010 (C ++) auf den Kopf geschlagen worden.
Die Zusammenstellung ergab folgende Ausgabe:
1 Debug \ is.obj: Warnung LNK4042: Objekt mehr als einmal angegeben; Extras ignoriert
1 Debug \ make.obj: Warnung LNK4042: Objekt mehr als einmal angegeben; Extras ignoriert
1 Debug \ view.obj: Warnung LNK4042: Objekt mehr als einmal angegeben; Extras ignoriert
1 identity.obj: Fehler LNK2019: ungelöstes externes Symbolvoid __cdecl test::identity::view(void)
(? view @ identity @ test @@ YAXXZ), auf das in der Funktion verwiesen wirdvoid __cdecl test::identity::identity(void)
(? identity @ 0test @@ YAXXZ)
1 identity.obj: Fehler LNK2019: ungelöstes externes Symbolvoid __cdecl test::identity::make(void)
(? make @ identity @ test @@ YAXXZ) in der Funktion referenziertvoid __cdecl test::identity::identity(void)
(? identity @ 0test @@ YAXXZ)
1 range.obj: Fehler LNK2019: ungelöstes externes Symbolvoid __cdecl test::range::is(void)
(? is @ range @ test @@ YAXXZ), auf das in der Funktion verwiesen wirdvoid __cdecl test::range::range(void)
(? range @ 0test) YAXXZ)
Linker-Fehler sind immer ein Problem beim Debuggen ... aber es gab ungelöste Referenzen, und so habe ich nachgesehen ... aber die Quelle ist wohlgeformt ... und schließlich hat es mich getroffen:
Meine Ordnerhierarchie sieht folgendermaßen aus:
src/
identity/
is.cpp
make.cpp
view.cpp
range/
is.cpp
make.cpp
view.cpp
und die Hierarchie in der Lösung auch (ich habe sie immer so eingerichtet, dass sie die "echte" Ordnerstruktur nachahmt).
Und die Diagnoseausgänge:
Debug\is.obj
Debug\make.obj
Debug\view.obj
Zusammen mit einer Warnung, die besagt, dass das .obj
zweimal an den Linker übergeben wurde und dass einer ignoriert wird.
Suchen Sie nicht mehr: Visual hat meine Ordnerhierarchie sauber reduziert und kann daher die Quelle nicht sauber kompilieren.
Im Moment denke ich nur daran, die Dateien umzubenennen, die das Problem abdecken sollten ...
... aber gibt es eine Möglichkeit, dass Visual Studio die Dateihierarchie NICHT reduziert?