如题
我调用com接口的dll,单独调用时没有问题,可是加载到我的程序中时就报错
system("Regsvr32 A.dll");
CoInitialize( NULL );
typedef HRESULT (__stdcall * B)(REFCLSID,REFIID,void**);
CLSID clsid;
HRESULT hr=CLSIDFromProgID(OLESTR("A.Foo"),&clsid);
IElectric *ptr=NULL;
hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL, __uuidof(IFoo), (void **)&ptr);
if(FAILED(hr))
{
//com组件库加载失败
}
_bstr_t bstr("3");
_variant_t PatInfo;
ptr->B(1,2,bstr,&PatInfo);//调用接口函数 --------debug到这时就出现题目中的错误
CoUninitialize();
我调用com接口的dll,单独调用时没有问题,可是加载到我的程序中时就报错
system("Regsvr32 A.dll");
CoInitialize( NULL );
typedef HRESULT (__stdcall * B)(REFCLSID,REFIID,void**);
CLSID clsid;
HRESULT hr=CLSIDFromProgID(OLESTR("A.Foo"),&clsid);
IElectric *ptr=NULL;
hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL, __uuidof(IFoo), (void **)&ptr);
if(FAILED(hr))
{
//com组件库加载失败
}
_bstr_t bstr("3");
_variant_t PatInfo;
ptr->B(1,2,bstr,&PatInfo);//调用接口函数 --------debug到这时就出现题目中的错误
CoUninitialize();
没注册成功吧?
a.dll文件路径有问题
直接执行你的程序a.dll应该和你的程序在一个目录,
如果在开发环境下执行, a.dll应该在项目工程目录下
{
//com组件库加载失败
}失败了需要 return 啊
是否注册成功控件CoCreateInstance是否创建实例成功,都需要检查这些地方
long _result;
HRESULT _hr = raw_returnInfo(ID, Type, Number, Info, &_result);//Debug到这时出错 _hr是空的,是-278999.。。的数值
当_hr是0时程序就没有任何问题
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _result;
}
求教如何解决,上面是别的公司delphi写的dll的部分,内部的我也不清楚