为什么更新到dll需要重新编译,有时候不需要?
答案 0 :(得分:3)
显然,对DLL的更改需要重新编译该DLL。但是,我认为你问的问题是为什么你可能不得不重新编译链接到该DLL的程序。
没有太多方法可以更改需要重新编译与之链接的代码的DLL。如果您更改调用约定,或DLL是否使用多线程/单线程运行时,或更改传递给各种函数的参数,或完全删除函数,那么您将不得不重新编译(请注意:此列表并非详尽无遗)。如果您只修复其中一个不会改变函数调用方式的函数中的错误,那么您将不必重新编译与DLL动态链接的代码。
答案 1 :(得分:2)
这称为“二进制兼容性”。保持这种兼容性并不容易,而且这方面的信息非常多余。你应该谷歌并自己测试。
以下是保持兼容性的一些(不完整)指南:
如果你使用COM并遵循COM指南,你应该始终保持安全。
注意:某些编译器标志也会破坏二进制兼容性。