2009-06-11 10 views
5

이전 VC6에서 VS 2008로 마이그레이션중인 C++ 프로젝트를 변경하여 이전 MSXML 3 대신 MSXML 6을 사용합니다. 코드가오류 C2011 : 'MSXML2 :: IXMLDOMImplementation': '구조체'형식 재정의

# import "msxml3.dll" 

을 가져 와서 우리가 MSXML3을 사용하고 VC6에있을 때 나는이 여러 다른 유사한 오류 오류 C2011를 얻을 프로젝트를 컴파일 할 때이 후

# import "msxml6.dll" 

로 대체 : 'MSXML2 :: IXMLDOMImplementatio n ':'struct '형식 재정의

위의 오류는 msxml3.tlh 파일에 있습니다.

1) msxml3이 아직 사용되는 이유는 무엇입니까?

2) 어떻게 든 자동으로 내 프로젝트에 포함되는 MSXML.h 문제를 좁혔습니다. 왜 이런거야?

3) MSXML의 어떤 버전이 MSXML.h에서 참조되고 있습니까?

4) 왜 세계에서 VC++에는 자동으로 너무 많은 헤더 파일이 포함되어 있습니까? 일부 헤더 파일을 포함시키지 않으려면 어떻게해야합니까?

5) C++ 프로젝트에서 MSXML6을 사용하는 올바른 방법은 무엇입니까? #import, header file ?????

6)이 문제를 어떻게 해결합니까?

언제든지 .net주세요. 훨씬 더 청결한. VC++ 프로젝트는 엉망입니다.

답변

1

the MS docoumentation on MSXML을 살펴보십시오.

.dll을 가져 오는 것이 .thl과 .tli 파일을 만들 것을 제안합니다. 삭제했는지 확인하십시오.

포함 디렉토리가 올바른 위치를 가리키는 지 확인하십시오.

msxml3을 프로젝트의 다른 위치로 가져 오지 않았는지 반드시 확인하십시오.

msxml.h를 찾으려면 CTx + SHIFT + F를 사용하여 'msxml'<에 대한 전체 솔루션을 검색하십시오. 올바르게 가져 오기를 했으므로 .h가 부족하다는 점에 유의하십시오. 다음 :

#include <msxml6.dll> 

그 중 일부를 시도 ...

+0

당신은 # dll을 포함 할 수 있습니까? – bobbyalex

+0

프로젝트를 정리했습니다. tlh 및 tli 파일이 자동으로 재생성됩니다. msxml3 전체 솔루션을 검색했지만 남은 건 아무것도 없습니다. 그것의 모든 msxml6. – bobbyalex

0

을 내가 msxml.h 이름을 변경하고 빌드를 수행하려고 할 것입니다. 그러면 msxml.h를 포함하는 파일이 표시됩니다.

2

#import 지시어의 구문을 확인하십시오. 가져 오기 지시문 (또는 rename_namespace)에서 이름 바꾸기 속성을 사용하여 가져온 요소의 이름을 바꿀 수 있습니다. 복제 된 요소와의 충돌을 해결합니다.

여기를 참조하십시오 : in MSDN

포함 순서 때때로 변화 (예 -을 주석으로 포함하고 import 문의 다른 순서를 시도)

는 MS의 실수로 크로스 단지 싸움을하지 마십시오

그들);