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

Ste*_*ich 4 c++ windows dll backwards-compatibility

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

Dav*_*nan 7

你的理解是正确的.只要您更改逻辑但不更改接口,则不会遇到兼容性问题.

你必须要小心的是,DLL的接口不仅仅是函数签名.例如,如果原始DLL接受了一个int参数,但是新的DLL强制执行一个约束,即该参数的值必须为正,那么你就会破坏旧程序.