我试图在Windows上编写一个挂钩到已注册DLL(IAccessible2Proxy.dll)的Python应用程序。问题是,这个DLL没有提供类型库,所以我重新编译了DLL来生成我自己的。我将这个本地存储在项目中并使用Python挂钩。
由于使用IAccessible2Proxy.dll的方式,任何更新都不太可能会删除现有方法。但是,在我更新类型库之前,它可能会被其他程序更新。
如果DLL由另一个程序更新,我生成的TypeLib是否仍然可以使用较新的DLL,或者类型库是否与特定的DLL版本绑定?我是否需要使用专门为该版本的DLL生成的类型库?
答案 0 :(得分:0)
在挖掘之后,看起来我找到了答案。
根据NVDA项目中的this commit,较旧的类型库应该与较新的DLL 和 DLL兼容,并且系统上存在较新的类型库。
# Windows updates often include newer versions of dlls/typelibs we use.
# The typelib being newer than the comtypes generated module doesn't hurt us,
# so kill the "Typelib newer than module" ImportError.
看起来python comtypes模块仍然抱怨,但这可以通过猴子补丁修复。
我认为这包括删除方法的DLL更新,前提是这些方法在删除后不会被访问,但这是猜测。尚未测试过。