【发布时间】:2021-08-31 15:01:03
【问题描述】:
我有一个需要从中调用函数的 COM DLL“XPLib.dll”。 我正在尝试使用 ATL::CComPtr,但我不知道从哪里获取所需的信息。 我没有任何标题或文档,只有一个 dll。
到目前为止,我正在这样做
ATL::CComPtr<IXPLibVacSystemControl> pVac;
hr = pVac.CoCreateInstance("CLSID_IXPLibVacSystemControl")
正如我在网上看到的其他人所做的那样,但我遇到了错误
'IXPLibVacSystemControl' : undeclared identifier
'pVac' : unknown size
'ATL::CComPtr' : No appropriate default constructor available
我是 COM / ATL 的新手,所以我不确定从哪里获取这些数据。
我正在使用面向 Windows XP 的 Visual Studio 2008。
【问题讨论】:
-
尝试使用 TypeLibrary 检查工具检查“XPLib.dll”。如果 DLL 确实包含类型库,请尝试
#import "XPLib.dll"docs.microsoft.com/en-us/cpp/preprocessor/… 还要检查您是否有单独的 XPLib.tlb 文件,您可以为定义#import 这个。 -
如果代码中没有
IXPLibVacSystemControl接口的声明,就不能使用COM 对象。如果你没有它的头文件,你需要获取它。此外,"CLSID_IXPLibVacSystemControl"可能不是此 COM 对象的有效 ProgID,它应该是CLSID_IXPLibVacSystemControl(没有引号,即pVac.CoCreateInstance(CLSID_IXPLibVacSystemControl)),但是您还需要CLSID_IXPLibVacSystemControl的定义,它应该在相同的头文件。
标签: c++ visual-c++ com atl