Как преобразовать динамическую dll в статический lib?

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

Ответы

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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