Как преобразовать динамическую DLL в статическую библиотеку? - PullRequest
15 голосов
/ 05 апреля 2010

пишу программу helloworld.exe;это зависит от ..dll.У меня нет исходного кода a.dll, который является динамической DLL.Как я могу изменить его на статическую библиотеку, чтобы связать его с helloworld.exe?

Ответы [ 6 ]

9 голосов
/ 05 апреля 2010

Извините, но прямого пути для этого нет. DLL - это полностью связанный исполняемый файл формата, где статическая библиотека представляет собой набор отдельных объектных файлов, собранных вместе. Немного поработав, вы можете преобразовать статическую библиотеку в DLL, но обратное действие нетривиально (мягко говоря).

5 голосов
/ 05 апреля 2010

Как сказал Джерри, вы не можете сделать это напрямую. Однако вы можете упаковать вашу программу в нечто вроде самораспаковывающегося RAR-файла, который включает DLL как часть одного EXE-файла, который автоматически извлекает EXE-файл и связанные DLL-файлы во временную папку и запускает основную программу.

2 голосов
/ 27 июня 2016

В Windows вы можете получить файл lib для запуска вашей программы, если у вас есть соответствующий файл def. Вы можете использовать окно командной строки Visual Studio, чтобы получить файл lib. Командная строка выглядит следующим образом: lib /def:XXX.def / machine: x64 (или x86 для получения 32-битной lib) /out:XXX.lib. Необходимо убедиться, что файл def и файл dll находятся в одной папке, и вы изменили каталог на папку.

2 голосов
/ 22 августа 2011

Ложь, это возможно сделать.Например, есть инструмент под названием dlltolib , который может это сделать.

0 голосов
/ 14 марта 2019

Я абсолютно в ужасе от непонимания хотя бы одного из (предположительно популярных?) Ответов.

Я написал компоновщик с нуля, каждую строку кода. Я знаю все, что нужно знать о DLL.

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

Чтобы преобразовать DLL в библиотеку, вы можете выполнить простые шаги, описанные в следующей хорошо написанной статье.

https://adrianhenke.wordpress.com/2008/12/05/create-lib-file-from-dll/

(я не Адриан Хенке, просто для информации)

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

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

Да, и, кстати, совершенно, совершенно, совершенно невозможно полностью преобразовать lib в dll.

0 голосов
/ 05 апреля 2010

Я согласен с Джерри, и если это проблема развертывания, вы можете использовать Nullsoft Scriptable Install System .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...