c++ - 导入库<->动态链接库兼容性

标签 c++ dll compatibility executable

考虑以下模型情况:

  1. DLL 接口(interface)没有改变,但实现改变了。是否需要将可执行文件与新的导入库链接?应用程序和 DLL 都在同一 IDE 中使用相同的编译器和链接器进行编译和链接。

  2. DLL 接口(interface)没有改变,但实现改变了。新版本的应用程序和 DLL 在 IDE 2.0 版本中编译和链接(符号意义,替换为例如 C++ Builder XE2)。是否可以将应用程序二进制文件与在 IDE 1.0 版本(例如 C++ Builder 6)中编译的旧版本导入库链接?程序是否可以正常运行而不会出现一些运行时错误(例如访问冲突)?

最佳答案

使用相同的编译器制造商和版本,即使是错位的名称也是相同的,所以您应该可以使用 #1。

#2 可以,这意味着考虑它可能会引入可能会影响您的名称修改兼容性。如果您导出的都是“C”样式(简单名称)和/或通过 .def 文件硬映射到未损坏的 ID(或者您按序号加载,现在似乎没有人这样做了),#2还是有可能的。

关于c++ - 导入库<->动态链接库兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13305511/

相关文章:

javascript - jQuery - 与 Firefox 的兼容性问题

c++ - 保证 C++ 库、C 链接的二进制兼容性的简单方法?

flash - 如果您运行的 Flash 应用程序使用了 Flash Player 不支持的类、方法或属性,将会发生什么情况?

c++ - 如何忽略无序映射/映射中的单个字符串值?

c++ - DLL 的 "good"调用约定是什么?

dll - 如何取消包含dll或其他二进制文件的其他开发人员的更改?

c - c中的动态链接库找不到-lmean

c++ - C++ 中 QObject 多重继承和策略/特征设计的问题

c++ - 二进制文件解释

c++ - 将对象传递给 C/C++ 时如何禁止 R 垃圾回收?