2009-06-11 7 views
5

Estoy cambiando mi proyecto de C++, que era anterior en VC6 y ahora se está migrando a VS 2008, para usar MSXML 6 en lugar del anterior MSXML 3. cuando el código estaba en VC6 estábamos usando MSXML3 mediante su importaciónError C2011: 'MSXML2 :: IXMLDOMImplementation': 'struct' redefinición de tipo

# import "msxml3.dll" 

este fue sustituido por

# import "msxml6.dll" 

Después de esto cuando compila el proyecto consigo este y varios otros errores similares error C2011: 'MSXML2 :: IXMLDOMImplementacion n ': redefinición de tipo' struct '

El error anterior se encuentra en el archivo msxml3.tlh.

1) ¿Por qué se sigue utilizando msxml3?

2) Reduje el problema a MSXML.h que de alguna manera se está incluyendo automáticamente en mi proyecto. ¿Por qué es esto?

3) ¿Qué versión de MSXML se está haciendo referencia en MSXML.h?

4) ¿Por qué en el mundo VC++ incluye automáticamente tantos archivos de encabezado? ¿Qué sucede si no quiero que se incluyan algunos archivos de encabezado?

5) ¿Cuál es la forma correcta de usar MSXML6 en un proyecto de C++? #import, header file ?????

6) ¿Cómo puedo solucionar este problema?

Dame .net en cualquier momento. Mucho más limpio. Un proyecto de VC++ es un desastre.

Respuesta

1

Echa un vistazo a the MS docoumentation on MSXML.

Sugieren que importar el .dll como lo ha creado creará un par de archivos .thl y .tli. Asegúrate de haber eliminado esos.

Asegúrese de que todos los directorios de inclusión apunten al lugar correcto.

Asegúrese de que no está importando msxml3 en otro lugar de su proyecto.

Para buscar msxml.h, haga CTRL + MAYÚS + F y busque toda la solución para 'msxml' < - tenga en cuenta la falta de .h porque si lo hubiera estado importando correctamente, debería hacerse como sigue:

#include <msxml6.dll> 

probar algunos de que ...

+0

¿Puedes # incluir un dll? – bobbyalex

+0

He limpiado el proyecto. Los archivos tlh y tli se vuelven a crear automáticamente. He buscado la solución completa para msxml3 y no queda nada. Es todo msxml6. – bobbyalex

0

que iba a tratar de cambiar el nombre MSXML.h y haciendo una generación. Eso debería mostrarle qué archivo incluye msxml.h.

2

Compruebe la sintaxis de la directiva # import. Puede cambiar el nombre de los elementos importados utilizando el atributo rename en la directiva de importación (o rename_namespace). Resolverá conflictos con elementos duplicados.

Ver aquí: in MSDN

A veces el cambio de la orden de inclusión (sí - probar diferentes orden de las sentencias de inclusión y de importación descomentándolos)

No luchar con los errores MS, solo eco ellos;)

Cuestiones relacionadas