Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

15.03.2014, 21:43

TinyXML 2 - Multiply defined symbol bei Memberfunktion

Liebe Community,

heute bin ich auf ein ziemlich schräges Problem gestoßen, das ich mir mal wieder nicht erklären kann. Das Problem ist folgendes: Ich benutze TinyXML 2, um XML-Dateien einzulesen. Dabei linke ich TinyXML statisch, und der Linker gibt keine Probleme, ich kann auf alle Attribute zugreifen, über alle Child-Nodes iterieren, und alles läuft gut, bis ich folgende Zeile einfüge:

C-/C++-Quelltext

1
2
3
4
// pChild wird zuvor initialisiert:
XMLElement* pChild = ...;
[...]
const char* name = pChild->Name();


Ich kann alle Memberfunktionen aufrufen, und ich erhalte den folgenden Linker-Fehler immer nur, wenn ich die Funktion Name() - die ja wiederum Value() aufruft - aufrufe, d.h. ich kann alle Funktionen benutzen, außer dieser einen Value()-Funktion, obwohl diese im gleichen Header deklariert wird.

Linker-Fehler:

C-/C++-Quelltext

1
2>tinyxml2d.lib(tinyxml2.obj) : error LNK2005: "public: char const * __thiscall tinyxml2::XMLNode::Value(void)const " (?Value@XMLNode@tinyxml2@@QBEPBDXZ) already defined in XMLLoader.obj


Nun meine Frage: Woher kann dieser skurrile Fehler rühren? Es scheint ja ausschließlich an einer einzelnen Memberfunktion zu liegen. Weiß irgendjemand Rat? Ich linke tinyxml2 der Konfiguration entsprechend, d.h. "Debug" nutzt tinyxml2d.lib, und "Release" nutzt tinyxml2.lib.

Liebe Grüße,
~ EuadeLuxe ~

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

15.03.2014, 21:53

Evtl. ein Bug in TinyXML? Möglicherweise ist diese Funktion in einem Header definiert und sollte eigentlich inline sein?

3

15.03.2014, 22:03

Ich habe mir den Header von TinyXML angeschaut, allerdings ist dort keine Funktion inline definiert. Auch seltsam ist, dass anscheinend noch niemand außer mir den Fehler erlebt hat. Ich habe auch schon geprüft, ob die Codegeneration-Eigenschaft übereinstimmt, mit der meines Projektes, und das tut sie auch. Ich bin wirklich ratlos.

Werbeanzeige