为什么更新到dll需要重新编译,有时候不需要?

时间:2010-06-09 04:55:03

标签: c++ dll compilation

为什么更新到dll需要重新编译,有时候不需要?

2 个答案:

答案 0 :(得分:3)

显然,对DLL的更改需要重新编译该DLL。但是,我认为你问的问题是为什么你可能不得不重新编译链接到该DLL的程序。

没有太多方法可以更改需要重新编译与之链接的代码的DLL。如果您更改调用约定,或DLL是否使用多线程/单线程运行时,或更改传递给各种函数的参数,或完全删除函数,那么您将不得不重新编译(请注意:此列表并非详尽无遗)。如果您只修复其中一个不会改变函数调用方式的函数中的错误,那么您将不必重新编译与DLL动态链接的代码。

答案 1 :(得分:2)

这称为“二进制兼容性”。保持这种兼容性并不容易,而且这方面的信息非常多余。你应该谷歌并自己测试。

以下是保持兼容性的一些(不完整)指南:

如果你使用COM并遵循COM指南,你应该始终保持安全。

注意:某些编译器标志也会破坏二进制兼容性。