c++ - 是否可以对 dll 进行更改,同时保持与预编译的可执行文件的兼容性?

标签 c++ windows dll backwards-compatibility

我们有很多可执行文件引用了我们的一个 dll。我们在我们的一个 dll 中发现了一个错误,不想重新编译和重新分发我们所有的可执行文件来修复它。 我的理解是,只要您不更改头文件中的任何内容,dll 就会保持与其可执行文件的兼容性。所以没有新的类成员,没有新的函数,等等......但是对函数内的逻辑进行更改应该没问题。这个对吗?如果它是特定于编译器的,请告诉我,因为这可能是个问题。

最佳答案

你的理解是正确的。只要更改逻辑而不更改接口(interface),就不会遇到兼容性问题。

您必须注意 DLL 的接口(interface)是否不仅仅是函数签名。例如,如果原始 DLL 接受一个 int 参数,但新的 DLL 强制执行此参数的值必须为正的约束,那么您将破坏旧程序。

关于c++ - 是否可以对 dll 进行更改,同时保持与预编译的可执行文件的兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7614972/

相关文章:

c++ - 在 'break' 中使用 'for-loop' 对性能的影响

c++ - 在 txt 文件中创建表格/组织列表

c# - 如何将 const int 从托管 C++ DLL 传递到 C# 以用作属性中的字段值

c++ - 无法使用 visual studio 导出 C++ dll

winapi - 使用 dllexport 从 DLL 导出函数

C++模板参数默认函数实现

c++ - C++函数的声明和定义不同,但效果很好

ruby - rspec tests under jruby on Windows running very slow

windows - 每个文件实例的自定义图标

windows - 是否有 OutputDebugString 的 Unicode 替代品?