创建COM组件失败的问题

look_think 2004-08-31 05:06:04
我用ATL写了一个非常简单的COM组件,接口中只有一个方法test,返回一个long数值。
用VB调用成功。
但是用C进行 CoCreateInstance 总是失败,返回总是错误的hr。代码如下。(dll已经注册成功)

void main()
{
IUnknown* pUnk = NULL;
HRESULT hr;

CoInitialize(NULL);

hr = CoCreateInstance(CLSID_test, NULL, CLSCTX_ALL, IID_IUnknown, (void**)pUnk);

if(SUCCEEDED(hr))
{
......
}

CoUninitialize();
}
...全文
167 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
look_think 2004-08-31
  • 打赏
  • 举报
回复
经过别人指点,发现是CoCreateInstance最后一个参数错误。
比较气人,创建组件的代码最初是来自《深入解析ATL》电子书的《How Connections Work》中的 Listing 12-2. Using connection points.这里面还有不少其他错误。

谢谢二楼。
look_think 2004-08-31
  • 打赏
  • 举报
回复
CLSID应该是对的,我都把dll工程中*.c文件中的CLSID移到客户端,不用包含的方式。
返回的hr是 -2147024809。我没有找出对应的HRESULT。
msdn_user 2004-08-31
  • 打赏
  • 举报
回复
CLSID_test是正确的CLSID吗?
hr的值和错误原因呢?

3,245

社区成员

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

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