DLL是否向后兼容旧类型库?

时间:2017-01-09 16:46:42

标签: dll typelib

我试图在Windows上编写一个挂钩到已注册DLL(IAccessible2Proxy.dll)的Python应用程序。问题是,这个DLL没有提供类型库,所以我重新编译了DLL来生成我自己的。我将这个本地存储在项目中并使用Python挂钩。

由于使用IAccessible2Proxy.dll的方式,任何更新都不太可能会删除现有方法。但是,在我更新类型库之前,它可能会被其他程序更新。

如果DLL由另一个程序更新,我生成的TypeLib是否仍然可以使用较新的DLL,或者类型库是否与特定的DLL版本绑定?我是否需要使用专门为该版本的DLL生成的类型库?

1 个答案:

答案 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更新,前提是这些方法在删除后不会被访问,但这是猜测。尚未测试过。