关于msxml的问题

lvdalin 2011-06-29 08:45:54
我原来在MFC程序中使用MSXML一直没问题。可是,最近写的一个MFC dll中也需要调用MSXML来解析xml文件。当在DLL的中调用msxml直接崩溃了。

在执行到第一行:
XML::IXMLDOMDocumentPtr xmlDoc(__uuidof(DOMDocument));
时就出错了,以后的代码根本没办法执行。有谁知道怎么解决吗?100分奉上。

注:XML::IXMLDOMDocumentPtr xmlDoc(__uuidof(DOMDocument));是在一个lib文件中,由这个dll调用的。
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ToperRay 2011-06-30
  • 打赏
  • 举报
回复
没有afxoleinit吧?
lvdalin 2011-06-30
  • 打赏
  • 举报
回复
如果专门写个导入接口,在接口中调用msxml,然后客户端调用接口,就没事,如果在dll的InitInstance中,或dllmain中调用msxml,就崩溃.
kyotrue 2011-06-29
  • 打赏
  • 举报
回复
控件注册过吗?
雪碧爱可乐 2011-06-29
  • 打赏
  • 举报
回复
使用MSXML的版本!
1,导入dll
#if defined(MSXML4)
#import <msxml4.dll> no_function_mapping
#define MSXMLNS MSXML2
#elif defined(MARKUP_MSXML3)
#import <msxml3.dll> no_function_mapping
#define MSXMLNS MSXML2
#else
#import <msxml.dll>
#define MSXMLNS MSXML
#endif
2' 调用com前要调用
CoInitialize(NULL);

3'创建实例

#if defined(MSXML4 )
HRESULT hr = m_pDOMDoc.CreateInstance( __uuidof(MSXML2::DOMDocument40) );
#elif defined( MARKUP_MSXML3 )
HRESULT hr = m_pDOMDoc.CreateInstance( __uuidof(MSXML2::DOMDocument) );
#else
HRESULT hr = m_pDOMDoc.CreateInstance( "Microsoft.XMLDOM" );
#endif
3'调用后要
CoUnInitialize();
快乐鹦鹉 2011-06-29
  • 打赏
  • 举报
回复
需要先CoInitialize(NULL); 吧

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧