Как исправить Typelib, сгенерированный MIDL?
Я пытаюсь сгенерировать typelib интерфейса INetCfg с использованием IDL на этой странице, показанной ниже:
import "netcfgx.idl";
[
uuid(d99085ff-c5d7-4a4c-a987-91a513e268a9),
version(1.0),
helpstring("NetCfgX 1.0 Type Library")
]
library NetCFGLib
{
interface IEnumNetCfgBindingInterface;
interface IEnumNetCfgBindingPath;
interface IEnumNetCfgComponent;
interface INetCfg;
interface INetCfgProperties;
interface INetCfgLock;
interface INetCfgBindingInterface;
interface INetCfgBindingPath;
interface INetCfgComponentBindings;
interface INetCfgBindingPath;
interface INetCfgClass;
interface INetCfgComponent;
interface INetCfgIdentification;
interface INetCfgClassSetup;
};
К сожалению, сгенерированный IDL все еще не может быть загружен из comtype, с кодом, приведенным ниже:
import comtypes.client as cc
cc.GetModule("C:\path\to\netcfg.tlb")
Это дает эту ошибку WindowsError: [Error -2147312566] Error loading type library/DLL
Как я могу исправить эту ошибку? Я использую 64-битную Windows 7 и Python 27 64
1 ответ
Решение
Поскольку я использую Windows 7 64bit, только что решил эту проблему, сначала запустив WDK setenv.bat <path_to_wdk> x64
, После этого сгенерируйте typelib либо используя midl netcfg.idl /env x64
(для 64-битного TLB) или midl netcfg.idl
(для 32-битного TLB).
Я решил использовать генерацию 64-битного TLB
Надеюсь, это поможет кому-то, кто только что свяжется с этим чудовищем COM!