Почему обновление до DLL требует перекомпиляции, а иногда нет? - PullRequest
2 голосов
/ 09 июня 2010

Почему обновление до DLL требует перекомпиляции, а иногда нет?

Ответы [ 2 ]

3 голосов
/ 09 июня 2010

Очевидно, что изменение DLL потребует перекомпиляции этой DLL.Тем не менее, я думаю, что вопрос, который вы задаете, заключается в том, почему вам, возможно, придется перекомпилировать программы, которые ссылаются на эту DLL.

Существует не так много способов изменить DLL, для которой потребуется перекомпиляция кода, связанного с ней.,Если вы измените соглашение о вызовах, или будет ли DLL использовать многопоточную / однопоточную среду выполнения, или измените параметры, передаваемые различным функциям, или удалите функции в целом, вам придется перекомпилировать ( обратите внимание: этот списокНЕ является исчерпывающим ).Если вы просто исправите ошибку внутри одной из функций, которая не меняет способ ее вызова, вам не придется перекомпилировать код, который динамически связывается с DLL.

2 голосов
/ 09 июня 2010

Это называется "Двоичная совместимость". Поддерживать эту совместимость нелегко, и информация об этом очень скудна. Вы должны Google и проверить это самостоятельно.

Вот некоторые (неполные) инструкции по сохранению совместимости:

Если вы используете COM и следуете руководству по COM, вы должны быть в безопасности все время.

примечание: некоторые флаги компилятора также нарушают двоичную совместимость.

...