CoCreateInstance 执行就出现内参非法0xc0000005 错误

jxw3000 2006-03-29 03:52:41
Ibase* pbase;
HRESULT hr;
hr = CoInitialize(0);
hr= CoCreateInstance(CLSID_app1,NULL,CLSCTX_INPROC_SERVER,IID_Ibase,(void**)&pbase);
if(SUCCEEDED(hr))
{
long x;
pbase->fuc1(1,&x);
}
// 释放COM
CoUninitialize();
代码如上,在CoCreateInstance执行的时候程序就非法退出了
我的服务端代码是
class ATL_NO_VTABLE Capp1 :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<Capp1, &CLSID_app1>,
public Ibase
{
public:
Capp1()
{
}

DECLARE_REGISTRY_RESOURCEID(IDR_APP1)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(Capp1)
COM_INTERFACE_ENTRY(Ibase)
END_COM_MAP()

// Ibase
public:
STDMETHOD(fuc2)(/*[in]*/BSTR in,/*[out]*/BSTR* out);
STDMETHOD(fuc1)(/*[in]*/long in,/*[out]*/long* out);
};
请高手帮我解惑啊
...全文
260 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
CLSID_app1对象是否没有正确注册
yongdu 2006-04-04
  • 打赏
  • 举报
回复
构造函数正确,说明对象new了,那么错误可能出现在查询Ibase接口处了。试试创建时先查IUnknown指针
binjuny 2006-04-03
  • 打赏
  • 举报
回复
CoCreateInstance 执行就出现内参非法0xc0000005 错误

0xc0000005 是内在访问错误,你可以看一下地址方面的
jxw3000 2006-03-29
  • 打赏
  • 举报
回复
说明一下,我的Ibase接口定义放在其他idl文件中。
jxw3000 2006-03-29
  • 打赏
  • 举报
回复
根据调试,我能知道Capp1的构造函数已经被执行了。
jxw3000 2006-03-29
  • 打赏
  • 举报
回复
这些都没问题的
syy64 2006-03-29
  • 打赏
  • 举报
回复
1、看看CoInitialize的返回值是否为真;
2、看看CoCreateInstance参数是否正确。

3,248

社区成员

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

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