Библиотека импорта & lt; — & gt; совместимость с динамическими ссылками

Рассмотрим следующие модельные ситуации:

  1. Интерфейс DLL не изменяется, но реализация делает. Обязательно ли связывать исполняемый файл с новой библиотекой импорта? И приложение, и DLL компилируются и связываются в одной IDE с использованием одного и того же компилятора и компоновщика.

  2. Интерфейс DLL не изменяется, но реализация делает. Новые версии приложения и DLL скомпилированы и связаны в IDE версии 2.0 (символическое значение, замените, например, C ++ Builder XE2). Можно ли связать двоичный файл приложения со старой версией библиотеки импорта, скомпилированной в версии IDE 1.0 (например, C ++ Builder 6)? Будет ли программа работать нормально без каких-либо ошибок во время выполнения (например, при нарушениях прав доступа)?

3

Решение

Оставаясь с тем же производителем и версией компилятора, даже искаженные имена будут одинаковыми, так что вы должны быть в порядке с # 1.

# 2 может, что означает, что, скорее всего, это так, введет совместимость искажения имен, которая может вас укусить. Если вы экспортируете все в стиле «C» (простые имена) и / или жестко сопоставлены через файл .def с не искаженными идентификаторами (или вы загружаете по порядковому номеру, что, похоже, больше никто не делает в наши дни), # 2 все еще возможно.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector