描述:
用matlab的combuilder生成myFirstCom组件,只有一个函数myfunc,测试程序用VC。
方法一:
HRESULT hr = CoInitialize(NULL);
ImyFirstCom *pIcomclass;
pIcomclass=NULL;
hr=CoCreateInstance(CLSID_myFirstCom, NULL, CLSCTX_ALL,
IID_ImyFirstCom, (void **)&pIcomclass);
if (hr!=S_OK)
return;
VARIANT x, y;
VariantInit(&x);
VariantInit(&y);
x.vt=VT_R8;
x.dblVal=5.0;
pIcomclass -> myfunc(1,&y,x);
CoUninitialize();
方法二:
::CoInitialize(NULL);
ImyFirstCom Icomclass;
//创建组件
Icomclass.CreateDispatch(CLSID_myFirstCom,NULL);
VARIANT result,a;
//double类型
a.vt =VT_R8;
a.dblVal=3.0;
Icomclass.myfunc(1,&result,a);
CString str;
str.Format("%f",result.dblVal);
AfxMessageBox(str);
Icomclass.ReleaseDispatch();
CoUninitialize();
为什么方法一不行,方法二行?而且方法一hr是等于S_OK的,也就是说com对象正确得到了。
困惑ing,忘com高手解答,对com不懂:)