现手头有一个活计,是VB调用了一个组件的示例,便现在我想用VC去调用,因为很多的代码是VC的。、
在VC中导入时出现如下提示
无法打开类型库文件:“d:\myworking\cs\rdbi\yhrtos\ntexec\phdata.dll”: 加载类型库/DLL 时出错
请问我该如何调用该组件,请大家帮想个法子吧。
VB调用代码
dim PHDObject as object
Set PHDObject = CreateObject("VisualPHD.Data")
PHDObject.HostName = "10.109.48.12"
sTagName = "WI25616.PV"
PHDObject.tags.Add sTagName
PHDObject.SampleFrequency = lFrequency
'PHDObject.SAMPLEMETHOD = sResample
PHDObject.SAMPLEMETHOD = "SNAPSHOT"
在VC中导入时出现如下提示
无法打开类型库文件:“d:\myworking\cs\rdbi\yhrtos\ntexec\phdata.dll”: 加载类型库/DLL 时出错
请问我该如何调用该组件,请大家帮想个法子吧。
VB调用代码
dim PHDObject as object
Set PHDObject = CreateObject("VisualPHD.Data")
PHDObject.HostName = "10.109.48.12"
sTagName = "WI25616.PV"
PHDObject.tags.Add sTagName
PHDObject.SampleFrequency = lFrequency
'PHDObject.SAMPLEMETHOD = sResample
PHDObject.SAMPLEMETHOD = "SNAPSHOT"
#import "<your dll path>"
确认<your dll path>是正确的路径,且就是“VisualPHD.Data”所在的DLL。
regsvr32 phdata.dll
2)如果没有,你先运行regsvr32 phdata.dll注册该COM,他既然能在VB里调用,那他就实现了IDispatch接口,VisualPHD.Data 为他的PROGID,我们就可以用IDispatch尝试调用它。IDispatch* pDis;
CLSID clsid;
CLSIDFromProgID(OLESTR("VisualPHD.Data"),&clsid);
CoCreateInstance(&clsid,NULL,CLSCTX_INPROC,IID_IDispatch,(void**)&pDis);
DISPID dispid;OLECHAR FAR* szMember = "ADD";
OLECHAR FAR* szpro="HostName";pDis->GetIDsOfNames( IID_NULL, &szMember, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
..................
..................
pDis->Invoke();