惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
B
Blog
罗磊的独立博客
GbyAI
GbyAI
博客园 - 三生石上(FineUI控件)
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
The GitHub Blog
The GitHub Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
MyScale Blog
MyScale Blog
Google DeepMind News
Google DeepMind News
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏

博客园 - liujun

几本敏捷书籍 数据不一致带来的障碍 微软将在SQL server 2008加入对Spatial的支持 Bentley GeoSpatial平台下一版本要发布的功能 使用MySQL的商业障碍 使用Oracle网络数据模型的缺点 拓扑模型研究 Scrum notes 空间数据库效率研究 在VS2005的Signing设置中不能创建新的key文件 对昨天传的gps测试程序小做了些修改 自己去年写的GPS小程序 利用MicroStation的高效绘图和建模能力给Google earth添加数据 MicroStation开发草稿 skype设置导致IIS不能启动的原因 特权模式 EVC中使用try/catch异常处理的麻烦 创建ListView控件 windows mobile程序性能考虑
使用智能指针封装类使用DOM
liujun · 2005-08-10 · via 博客园 - 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。