Почему вы не можете объединить DLL с EXE, как если бы она была статически связана? - PullRequest
3 голосов
/ 06 июня 2011

Почему невозможно * «перекомпоновать» собственную разделяемую библиотеку (DLL) в исполняемый файл, как если бы они были статически связаны? В DLL отсутствует какая-либо необходимая информация?

* Примечание: или это действительно возможно? Если да, пожалуйста, дайте мне знать, но в результате поисков я пришел к выводу, что это невозможно.

1 Ответ

1 голос
/ 06 июня 2011

Это напрямую невозможно.

Когда EXE загружает DLL (через LoadLibrary), много работы, выполняемой загрузчиком DLL для исправления адресов. Вы не можете просто объединить DLL как есть с exe, потому что ее адреса неправильны , если она не динамически загружена.

С другой стороны, LIB статически связан: загрузка не требуется, фиксация адреса не выполняется, все работает без дальнейшей работы при запуске программы.

Что можно сделать, это преобразовать DLL и EXE обратно в OBJ и статически связать их вместе.

...