liujun

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
MSXML SDK文档的例子:
#include <stdio.h>
#import 
<msxml4.dll>
using namespace MSXML2;

int main(int argc, char* argv[])
{
   IXMLDOMDocument3Ptr pXMLDom;
   HRESULT hr;

   CoInitialize(NULL);
   hr
= pXMLDom.CreateInstance(__uuidof(DOMDocument40));
   
if (FAILED(hr)) 
   
{
      printf(
"Failed to instantiate an XML DOM.\n");
      
return -1;
   }


   pXMLDom
->async = VARIANT_FALSE; // default - true,

   
if(pXMLDom->load("stocks.xml")!=VARIANT_TRUE)
   
{
      printf(
"Failed to load stocks.xml:\n%s\n",
         (LPCSTR)pXMLDom
->parseError->Getreason());
      
return -1;
   }

   
else
      printf(
"XML DOM loaded from stocks.xml:\n%s\n"
         (LPCSTR)pXMLDom
->xml);
   pXMLDom.Release();
   CoUninitialize();
   
return 0;
}
很不幸,不能编译通过。首先也许我装的msxml4.dll里还没有IXMLDOMDocument3Ptr定义,要改为IXMLDOMDocument2Ptr。
然后看到http://www.cnblogs.com/babyblue/archive/2005/05/13/154430.html这里说释放智能指针要用pXMLDom = NULL。可是MS的例子确都用Release()。孰是孰非,我

实践下来智能指针释放应该赋NULL。
posted on 2005-08-10 14:55  liujun  阅读(1107)  评论(0编辑  收藏  举报