2010-12-02 3 views
1

응용 프로그램 용 Microsoft XML 코어를 msxml3.dll에서 msxml6.dll로 업그레이드하는 데 문제가있었습니다. 나는 vcproj와 chmaged 헤더 파일을 msxml6 헤더와 라이브러리 파일을 가리 키도록했다. 또한 CoCreateVariant() 함수를 사용하여 문서 praser를 만들기 위해 msxml6의 클래스 ID를 변경했습니다.MsXml6.dll로 업그레이드

실행하는 동안 내 응용 프로그램에서 예외 처리를 중단하고 중단합니다. 그런 다음 Visual Studio로 디버깅 한 결과, getElementByTagName() 함수가 msxml6.dll 라이브러리를 사용하는 동안 널 포인터를 반환한다는 것을 알았습니다.이 라이브러리는 추가 참조 원인을 중단시키고 msxml3.dll과 잘 작동합니다.

아무에게도 "처리되지 않은 예외"가 msxml6.dll 때문에 발생했는지 알 수 있습니까? 어떻게 해결할 수 있습니까?

답변

0

요소에 네임 스페이스가 있는지 다시 확인할 수 있습니까? 아마도 이것은 MSXML6과 네임 스페이스 측면에서 MSXML6이 더 잘 호환되는 MSXML3과 MSXML6 사이의 동작 변경 때문일 수 있습니다. 이 문제를 해결하려면 대신 XPath를 사용하는 것이 좋습니다.

+0

감사합니다. 네, 맞습니다. msxml3.dll을 msxml3.dll로 업그레이드하려고합니다. 내가 가진 appplication은 C++로 완전하게 작성되었습니다. msxml3.dll에서 찾을 수있는 메모리 누수가 많을수록 msxml6.dll로 업그레이드하는 것이 좋습니다. Xpath를 사용하여이 오류를 수정하는 방법을 자세히 설명해 주시겠습니까? – Santhosh77

+0

XPath는 네임 스페이스를 인식하므로 selectSingleNode 및 selectNodes를 사용하여 원하는 노드를 얻을 수 있습니다. MSDN에서 자세한 설명서를 검색 할 수 있습니다. –