描述:
我建了一个COM,并实现了IDispatch,不过没有实现类型库,但能被VC调用IDispatch调用,可是不能被VB调,
VB调用代码如下是失败的:
Dim objMath As Object
objMath = CreateObject("goodCom.IX.2")
objMath.Fx()
VC代调用码成功如下:
::CLSIDFromProgID(L"InsideCOM.Chap07.1aaaaaaaaaa",&clsid);
if(FAILED(CoInitialize(NULL)))
{
trace("Unable to initialize COM");
return -1;
}
IUnknown* pUnk;
pUnk=NULL;
HRESULT hr=CoCreateInstance(clsid,
NULL,
CLSCTX_SERVER,
IID_IUnknown,
(void* * )&pUnk);
if(FAILED(hr))
{
trace("Failed to create Server instance .");
CoUninitialize();
}
IDispatch* pDispatch;
hr=pUnk->QueryInterface(IID_IDispatch,(void** )&pDispatch);
pUnk->Release();
if(FAILED(hr))
{
trace("Failed to create server instance ");
CoUninitialize();
return -1;
}
LPOLESTR lpOleStr=L"Fx";
DISPID dispid;
hr=pDispatch->GetIDsOfNames(IID_NULL,&lpOleStr,1,LOCALE_SYSTEM_DEFAULT,&dispid);
if(FAILED(hr))
{
trace("GetIDsOfNames failed.HR");
}
VARIANTARG vaResult;
hr=pDispatch->Invoke(dispid,IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD,NULL,&vaResult,0,NULL);
有有谁知道,要被VB调用要实现什么东东啊!!!!还有怎么用MIDL,我建了IDL怎么用MIDL执行它啊,我用midl Myidl.idl命令失败,没有生成类型库晕倒