初次在VC环境中使用XML,所以照着例子学习,不过在导入xml库到vc中时就碰到一个奇怪的问题:// 导入XML库
#import <msxml.dll> named_guids
using namespace MSXML;
// 然后再随便声明一个XML类型的变量
IXMLDOMDocumentPtr m_plDomDocument;以上代码在VC6中正常编译,但当我升级到vc7时却总是爆出以下错误:
d:\08==WG\WGProject\DomTest\DomTestDlg.h(23): error C2872: “IXMLDOMDocumentPtr” : 不明确的符号之后又去参考MSDN上提供的使用XML的例子,在VC7中使用时还是同样的问题搞不懂了,有谁能帮我解释一下吗?

解决方案 »

  1.   

    这样用不会有问题
    MSXML::IXMLDOMDocumentPtr m_plDomDocument;using namespace MSXML;
    在VC.Net中好像没有生效,我也不解
      

  2.   

    谢谢hahu(地痞 -- 勿近)
    总算能编译了,
    有没有高手能解释一下为何会这样呢?
      

  3.   

    #include <msxml2.h>
    估计也可以,既然你好像没用到智能指针。
      

  4.   

    #include <stdio.h>
    #import <msxml4.dll>void dump_com_error(_com_error &e);int main(int argc, char* argv[]) 
    {
    CoInitialize(NULL);
    try 
    {
    MSXML2::IXMLDOMDocumentPtr pXMLDoc = NULL;
    HRESULT hr = pXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
    pXMLDoc->async =  VARIANT_FALSE; // default - true, hr = pXMLDoc->loadXML("<tag1>Abcdef</tag1>");
    //hr = pXMLDoc->load("myData.xml");

    if (hr != VARIANT_TRUE)
    {
    MSXML2::IXMLDOMParseErrorPtr  pError;
    pError = pXMLDoc->parseError;
    _bstr_t parseError =_bstr_t("At line ")+ _bstr_t(pError->Getline()) + _bstr_t("\n")+ _bstr_t(pError->Getreason());
    MessageBox(NULL,parseError, "Parse Error",MB_OK);
    return 0;
    }
      

  5.   

    原因很简单:
    IXMLDOMDocumentPtr在VC70中已经有了(VC6没有),实际上你是不用导入的,
    要导入也要带着域名用,否则就与VC70库中同名
    VC7直接支持XML