Как исправить 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!

Другие вопросы по тегам