3

考虑以下模型情况:

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

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

4

1 回答 1

2

使用相同的编译器制造商和版本,即使名称不正确,也将是相同的,因此您应该对 #1 没问题。

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

于 2012-11-09T09:49:48.120 回答