我有一个我应该使用的SDK。此SDK不记录要使用的具体dll文件。 C头文件包含类ID。还有接口和类声明。这些可以用作导出函数的参数,也可以用作返回值。
示例声明:
const CLSID CLSID_Core2 = {0x1111111D,0x111D,0x99bc,{0x99,0x99,0x99,0x99,0x99,0x99,0xff,0xaa}};
从C程序中使用它:
CComPtr<ICatalog> tprogrammers;
hr = m_Core.CoCreateInstance(CLSID_Core2);
hr = m_Core->get_Programmers(&tprogrammers);
CComPtr和ICatalog类在别处定义。 CComPtr内置于windows(https://msdn.microsoft.com/hu-hu/library/ezzw7k98.aspx)中,但ICatalog在头文件中定义,该文件是SDK的一部分。 SDK包含许多带有接口和类ID的头文件,但它不包含任何实现(C或CPP文件)。
我是否有可能使用这些头文件并使用Python中安装的SDK?
答案 0 :(得分:1)
您必须使用支持IUnkwown *(或“早期绑定”)接口的comtypes
包:http://pythonhosted.org/comtypes/,与仅支持IDispatch *的pywin32
相反(或“后期绑定“)接口。
PS:CComPtr
不是构建到Windows中的,它是随Visual Studio VC ++文件提供的辅助类。
答案 1 :(得分:0)
无需使用CLSID创建对象。只需使用人类可读的ProgID来创建对象。
AFAIK Phython使用后期绑定(IDispatch接口),因此这里不需要接口定义。