2011-01-25 3 views
1

MSXML2를 사용하는 상속 된 VC++ 프로젝트를 컴파일하려고합니다. 이것은 ATL .EXE 프로젝트입니다."MSXML2"에는 VC++ 2010에서 멤버 "IXMLDOMNode"문제가 없습니다

#include "msxml2.h" 

using namespace MSXML2; 

처리기 정의가없이 MSXML2 네임 스페이스가 정의되지 않았기 때문에 나는이 프로젝트에 추가 __USE_MSXML2_NAMESPACE__을 포함 : 헤더 파일에는 다음이 포함되어 있습니다.

오류 C2039 : 'IXMLDOMNode'나는 형태의 많은 오류가이 프로젝트를 빌드하려고하면 'MSXML2'

이러한 오류는 다음

같은 선언에 의해 생성의 구성원이 아닌
CComPtr<MSXML2::IXMLDOMNode> pNode; 

IXMLDOMDocument 및 IXMLDOMNode를 포함하여 다른 구성원을 찾을 수 없습니다.

+1

msxml2.h를 포함하고 __USE_MSXML2_NAMESPACE__을 제거하고 MSXML2 네임 스페이스를 사용할 수 있으며 CComPtr pNode;를 사용할 수 있습니까? 그게 효과가있다. –

+0

감사! 그게 실제로 효과가 있었는지, 당신이 나에게 무슨 일이 일어 났는지에 대한 간단한 설명을 해줄 수 있습니까? – Nack

답변

2

  1. msxml2.h 헤더를 포함 수정할 수 있습니다.
  2. USE_MSXML2_NAMESPACEusing namespace MSXML2 코드를 제거하십시오.
  3. CComPtr<IXMLDOMNode> pNode;을 네임 스페이스없이 사용하십시오.

import 키워드를 사용하여 Visual C++에서 MSXML2 네임 스페이스를 사용하여 TBL에서 헤더 파일을 생성하도록 요청하는 많은 프로젝트를 보아 왔습니다. 그러나 헤더를 사용하고 lib에 링크하는 것은 C++ 표준이 아니므로 import 키워드를 사용하지 않는 것이 가장 좋습니다. 결론은 오래된 프로젝트를 새로 고칠 때 두 가지 방법을 혼용하지 않기 때문에 이와 같은 문제가 발생할 수 있다는 것입니다.

+0

고마워, 문제가 고쳐졌고 지금 컴파일 중! 나는 'using'문과 'MSXML2 ::'한정자를 모두 제거하는 것이 나에게 반 직관적으로 보일 것이라고 말하고 싶지만 마감 시간이 어렴풋이 나타나면 불평하지 않는다. – Nack

관련 문제