2009-06-11 11 views
5

Ich ändere mein C++ - Projekt, das früher in VC6 und jetzt auf VS 2008 migriert wurde, MSXML 6 anstelle der früheren MSXML 3. verwenden wenn der Code in VC6 war, dass wir durch den Import mit MSXML3 wurdenFehler C2011: 'MSXML2 :: IXMLDOMImplementation': 'struct' Typ Neudefinition

# import "msxml3.dll" 

wurde mit

# import "msxml6.dll" 

Danach ersetzt, wenn ich das Projekt, das ich diese und einige andere ähnliche Fehler erhalten kompilieren Fehler C2011: 'MSXML2 :: IXMLDOMImplementatio n ':' struct 'Typ Neudefinition

Der obige Fehler ist in der Datei msxml3.tlh.

1) Warum wird msxml3 noch verwendet?

2) Ich habe das Problem auf MSXML.h eingegrenzt, das irgendwie automatisch in meinem Projekt enthalten ist. Warum ist das?

3) Auf welche Version von MSXML wird in MSXML.h verwiesen?

4) Warum in der Welt enthält VC++ automatisch so viele Header-Dateien? Was ist, wenn ich nicht möchte, dass einige Header-Dateien enthalten sind?

5) Was ist der richtige Weg für die Verwendung von MSXML6 in einem C++ - Projekt? #import, Header-Datei ?????

6) Wie behebe ich dieses Problem?

Geben Sie mir .net jederzeit. Viel sauberer. Ein VC++ Projekt ist ein Durcheinander.

Antwort

1

Werfen Sie einen Blick auf the MS docoumentation on MSXML.

Sie schlagen vor, dass das Importieren der .dll, wie Sie haben, einige .thl- und .tli-Dateien erstellt. Stellen Sie sicher, dass Sie diese gelöscht haben.

Stellen Sie sicher, dass alle Include-Verzeichnisse an die richtige Stelle zeigen.

Stellen Sie absolut sicher, dass Sie msxml3 nicht irgendwo anders in Ihrem Projekt importieren.

Um die msxml.h zu finden STRG + UMSCHALT + F und suchen Sie die gesamte Lösung für 'msxml' < - beachten Sie das Fehlen der. H, denn wenn Sie es richtig importiert wurde, sollte es als getan werden folgt:

#include <msxml6.dll> 

einige bereites ...

+0

können Sie eine DLL einschließen? – bobbyalex

+0

Ich habe das Projekt gereinigt. Die Dateien tlh und tli werden automatisch neu erstellt. Ich habe die gesamte Lösung für msxml3 durchsucht und es ist nichts mehr übrig. Alles ist msxml6. – bobbyalex

0

ich versuche MSXML.h Umbenennung würde und einen Build zu tun. Das sollte Ihnen zeigen, welche Datei msxml.h enthält.

2

Überprüfen Sie die Syntax der Direktive #import. Sie können importierte Elemente umbenennen, indem Sie das rename-Attribut für import-Anweisung (oder rename_namespace) verwenden. Es löst Konflikte mit duplizierten Elementen.

Siehe hier: in MSDN

Manchmal Änderung der Inklusion Ordnung (ja - versuchen unterschiedliche Reihenfolge der umfassen und Import-Anweisungen, indem sie aus Kommentierung)

Sie nicht mit den MS Fehler kämpfen, nur Quer sie;)

Verwandte Themen