描述:
#import "WavetrendRX200Com.dll" no_namespace
void CMy22Dlg::OnOK()
{
// TODO: Add extra validation here
CoInitialize(NULL);
CLSID clsid;
HRESULT hr=CLSIDFromProgID(OLESTR("WavetrendRX200Com.IRX200"),&clsid);
//得到的值居然是-2147221005
IRX200 *ptr;
hr=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,
__uuidof(IRX200),(LPVOID*)&ptr);
//得到的值居然是-2147221164
ptr->Open(1,5,57600);
CoUninitialize();
}
到ptr->Open(1,5,57600);这里时出错。
不知道错在哪里了?
请高手指点。
解决方案1:
因为
你的组件没有注册,或者注册的不正确!
VB中函数参数默认是传地址方式(可以修改设置),
Open(dwId As Long, nbPortId As Byte, nBaudRate As Long) As Long
相当于
Open(byref dwId As Long, byref nbPortId As Byte, byref nBaudRate As Long) As Long
楼主可以把byref 改成byval,
或者在VC中定义变量,用变量做为参数,不要直接传送常量.
int nId = 1, nPort = 5, nBaudRate = 57600;
ptr->Open(&nId, &nPort, &nBaudRate);
Open是怎么定义的?