描述:
如题!
1、我已经在系统中使用regsvr32注册了该COM;
2、包含头文件:
#include "EISVIDConnector.h"
#include "EISVIDConnector_i.c"
3、我的调用方式
BSTR bstrDesc;
_Status* pStatus;//Com中已经定义的接口
try
{
HRESULT hr = CoInitialize(NULL);
if (SUCCEEDED(hr)) {
hr = CoCreateInstance(CLSID_Status,NULL,
CLSCTX_LOCAL_SERVER,IID__Status,
reinterpret_cast<void**>(&pStatus));
//上面一句出错!返回是一个负值!
}
if (SUCCEEDED(hr)) {
pStatus->put_StationID(A2BSTR("test"));
}
}
catch(_com_error &e)
{
bstrDesc = e.Description();
}
CoUninitialize();
}
4.如果大侠有需要,我可以将IDL贴上来!
请大家帮我看看,可能是哪里出了问题,提建议也有分啊!
解决方案1:
有没有调用CoInitializeEx(NULL, COINIT_MULTITHREADED)先?
解决方案2:要么是注册的问题,查看注册表,要么就是GUID的问题,可以跟到你的DLL里,看能跟进去不
解决方案3: 错拉!应该是
AfxOleInit();
hr = CoCreateInstance(CLSID_Status,NULL,CLSCTX_LOCAL_SERVER,IID__Status,reinterpret_cast<void**>(&pStatus));
确保在vc带的哪个工具里面能找到你的接口信息,然后
AfxOleInit();
.......
if (SUCCEEDED(hr)) {
hr = CoCreateInstance(CLSID_Status,NULL,
CLSCTX_LOCAL_SERVER,IID__Status,
reinterpret_cast<void**>(&pStatus));
如果还不可以,方便的话可以给我发过来,我这几天正在研究com,共同学习
我觉得也是注册的问题,对象创建不成功,肯定是scm找不到你DLL的位置,你可以看看注册表CLSID键下有你的com组件吗?是否成功注册啊
您可能想查找下面的文章:
- CoCreateInstance和CoCreateInstanceEx的区别??
- 抓狂!看了几天了,CoCreateInstance总是出错!!!!救命啊!
- 请教CoCreateInstanceEx产生E_ACCESSDENIED的原因
- CoCreateInstance的内部实现问题??
- 在DEV-CPP中编译建立快捷方式代码出现incompatibletypeforargument1of`CoCreateInstance'
- 用dll的COM除了cocreateinstance能不能就当普通DLL用loadlibrary调用。
- CoCreateInstanceEx问题
- CoCreateInstance调用成功,CoGetClassObject调用失败,为什么?
- CoCreateInstance调用出错,帮看看!
- CoCreateInstance的问题