Tinyxml - Link-Fehler beim Targeting der x64-Plattform

8

Ich verwende tinyxml Bibliothek zum Parsen von XML-Dateien in meinem Projekt. Wenn ich versuche, x64-Plattformen anzusprechen, bekomme ich LINKER-Fehler und hier ist einer von ihnen:

  

Fehler 4 Fehler LNK2001: nicht aufgelöstes externes Symbol "privat: statisch   Struktur TiXmlString :: Rep TiXmlString :: nullrep_ "   (? nullrep_ @ TiXmlString @@ 0Eurep @ 1 @ A) ClassThatUsesTinyXML.obj

Update : Ich dachte mir, dass die x64-Version von tinyxml nicht installiert war, aber als ich versuchte, die Bibliothek für x64-Plattformen zu erstellen, kam dieser Fehler:

%Vor%     
Kira 28.03.2013, 09:13
quelle

3 Antworten

5

Anstatt tinyxml für x64 platforms zu erstellen und dann tinyxml.h und tinystr.h zum Projekt hinzuzufügen, habe ich soeben alle Bibliotheksdateien einschließlich der .cpp -Dateien hinzugefügt und kann nun x64-Plattformen als Ziel verwenden, die Bibliothek ist in der Tat, gebaut werden, wenn ich das ganze Projekt baue.

    
Kira 03.04.2013, 09:02
quelle
3

Es sieht nicht so aus, als ob tinyxml Shared Library-Builds direkt unterstützt.

Hier sind die Schritte, die ich ausgeführt habe, um eine DLL aus den tinyxml 2.6.2-Quellen zu erstellen:

  1. Öffnen Sie die mitgelieferte SLN-Datei tinyxml.sln in MS Visual Studio Express 2012 für Windows Desktop. Wählen Sie, um die alten Projektdateien nach Aufforderung in das neue Format zu konvertieren.
  2. Wählen Sie unter "Lösungsplattformen" "Configuration Manager ..."
  3. aus
  4. Wählen Sie unter "Aktive Lösungsplattform" "& lt; Neu ... & gt;"
  5. Wählen Sie unter "Typ oder wählen Sie die neue Plattform:" "x64" aus, falls noch nicht ausgewählt. Stellen Sie sicher, dass Sie Einstellungen aus der "Win32" -Konfiguration kopieren. OK klicken. Klicken Sie auf Schließen, um den Konfigurationsmanager zu beenden.
  6. Klicken Sie mit der rechten Maustaste auf das tinyxml-Projekt im Projektmappen-Explorer. Wählen Sie "Eigenschaften".
  7. Wählen Sie für "Konfiguration:" "Alle Konfigurationen". Wählen Sie für "Plattform:" die Option "Alle Plattformen".
  8. Ändern Sie auf der Seite Konfigurationseigenschaften → Allgemein den "Konfigurationstyp" in "Dynamische Bibliothek (.dll)". Ändern Sie "Zielerweiterung" in ".dll". Klicken Sie auf OK, um das Dialogfeld "Eigenschaften von TinyXml" zu schließen.
  9. Wählen Sie die Konfiguration "Release" und die Plattform "x64".
  10. Klicken Sie mit der rechten Maustaste erneut auf das tinyxml-Projekt im Projektmappen-Explorer und wählen Sie "Neu erstellen".

Innerhalb von tinyxml_2_6_2\tinyxml\x64\Release finden Sie tinyxml.dll , aber keine Importbibliothek ( tinyxml.lib ). Dies liegt daran, dass keine Symbole exportiert werden. Siehe Wie geht es? Erstellen Sie eine Importbibliothek (.lib) UND eine DLL in Visual C ++?

Wenn Sie die gemeinsame Bibliotheksroute verwenden möchten, müssen Sie die gewünschten Symbole über den MSVC-spezifischen __declspec(dllexport) -Modifikator exportieren. Siehe Symbolsichtbarkeit in Windows .

    
Daniel Trebbien 07.04.2013 23:37
quelle
1

Die Fehler treten auf, wenn Sie TIXML_USE_STL für die Kompilierung der Bibliothek definieren, nicht jedoch für die Quellen, die mit der Bibliothek verknüpft sind. Das Endergebnis ist, dass die Bibliothek mit anderem Code aus den Quellen kompiliert wird, die die Bibliothek verwenden.

    
Patrick 06.10.2014 17:33
quelle

Tags und Links