如何修复MIDL生成的Typelib?

时间:2014-04-06 17:26:37

标签: python midl comtypes

我正在尝试使用IDL in this page生成INetCfg接口的typelib,如下所示:

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

如何修复此错误? 我使用的是Windows 7 64位和Python 27 64

1 个答案:

答案 0 :(得分:0)

当我使用Windows 7 64位时,首先运行WDK setenv.bat <path_to_wdk> x64解决了这个问题。之后,使用midl netcfg.idl /env x64(对于64位TLB)或midl netcfg.idl(对于32位TLB)生成类型库。

我选择使用生成64位TLB

希望能帮助那些刚接触这个COM野兽的人!