加载COM时的错误!!

songyangk 2003-04-04 05:56:57
我想做一个SourceSafe的后台控制程序,使用了微软官方提供的头文件Ssauto.h,在执行到hr = CoCreateInstance(...)时,返回值为类没有注册,经过查找注册表之后发现CLSID里确实没有,但LIBID是可以找到的,是不是用CoCreateInstance函数不正确啊?有什么其它方法吗?

代码如下:

#include "stdafx.h"
#include "Ssauto.h"

#import "ssapi.dll"

int main(int argc, char* argv[])
{
HRESULT hr;
LPUNKNOWN pUnk;
IVSSDatabase* db;

CoInitialize(NULL);

hr = CoCreateInstance(LIBID_SourceSafeTypeLib, NULL, CLSCTX_INPROC_SERVER, IID_IVSSDatabase, (VOID FAR **) &pUnk);

if (FAILED(hr))
{
return -1;
}

CoUninitialize();
return 0;
}
...全文
42 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kint 2003-04-07
  • 打赏
  • 举报
回复
试试这个吧:

#import "C:\\Program Files\\Microsoft Visual Studio\\Common\\VSS\\win32\\ssapi.dll" \
raw_interfaces_only, raw_native_types, no_namespace, named_guids

main()
{
IVSSDatabase* db;
hr = CoCreateInstance(CLSID_VSSDatabase,NULL,CLSCTX_SERVER,IID_IVSSDatabase,(void**) &db );
}
qyci 2003-04-07
  • 打赏
  • 举报
回复
1. CoCreateInstance使用错误,
参数1应该是组件的CLSID, 而不是Lib库的UUID。

还有需要提醒一下,参数5的接口IID和参数6的接口类型不一致。

2. 使用#import "ssapi.dll"后,就可以使用VC提供的智能指针,简单而且不易出错。

songyangk 2003-04-07
  • 打赏
  • 举报
回复
ssapi.dll已经是注册过的了。有没有哪位高手帮忙调试一下,万分感谢!
alidiedie 2003-04-06
  • 打赏
  • 举报
回复
regsvr32 lib.dll
估计可以吧
你自己注册一下
cjw1881 2003-04-06
  • 打赏
  • 举报
回复
共同学习,友情UP
songyangk 2003-04-05
  • 打赏
  • 举报
回复
有没有哪些高手帮帮忙。。急!分不是问题,我暂时还有8千多分可以用!
ylb_and_xy 2003-04-05
  • 打赏
  • 举报
回复
up

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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