Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Инструменты разработчика _ MinGW: интеграция имеющейся DLL'ки в exe'шник

Автор: Litkevich Yuriy 31.5.2010, 12:26

Есть потребность, впихать каким-либо способом, тело dll'ки в exe'шник, который от неё зависит.
Но разумеется сделать это так, чтобы exe'шник её нормально понимал во время выполнения. В идеале это должно обеспечиваться самим компилятором. Примерно как при статической линковке.

Вопрос как это сделать?

П.С. интернет по этому поводу в рот воды набрал, или я совсем криво запросы составлял

Автор: Kagami 31.5.2010, 13:16

Исходников библиотеки нет?
P.S. Пришла в голову безумная идея - впихнуть библиотеку в ресурсы и подгружать нужные функции из этой библиотеки вручную.

Автор: alex977 31.5.2010, 13:22

Юрий, может переформулируешь вопрос?
1) что у тебя уже есть (src или exe+dll)?
2) чего ты хочешь добиться? Монолитный исполняемый файл? Или просто засунуть exe и dll в один бОльший исполняемый файл (типа как в Python сделать из проекта один исполняемый файл с интерпретатором, ddl библиотек и файлами пользователя внутри).

Автор: Litkevich Yuriy 31.5.2010, 15:44

Приеду такой пример:
mingwm10.dll
и
my.exe, который зависит от этой dll'ки
Нужно получить один my.exe, который уже не будет зависить от этой dll'ки

Я могу как угодно пересобирать my.exe (любые ключи и т.д. и т.п), но трогать dll'ку не могу и будем считать, что кроме *.a и заголовочников у меня нет исходников этой dll'ки

П.С. таже задача, например для fbclient.dll (Клиентская библиотека Firebird)

Цитата(Kagami @ 31.5.2010, 17:16) *
P.S. Пришла в голову безумная идея - впихнуть библиотеку в ресурсы и подгружать нужные функции из этой библиотеки вручную.
была подобная идея, но приложение даже не запустится (в случае с моим первым примером)

Автор: Kagami 31.5.2010, 16:29

Цитата(Litkevich Yuriy @ 31.5.2010, 16:44) *
Цитата(Kagami @ 31.5.2010, 17:16) *
P.S. Пришла в голову безумная идея - впихнуть библиотеку в ресурсы и подгружать нужные функции из этой библиотеки вручную.
была подобная идея, но приложение даже не запустится (в случае с моим первым примером)

Тут ключевое слово вручную. Т.е. через LoadLibrary и далее по списку :) Естественно, приложение придется переписывать для такого режима работы.

Автор: Litkevich Yuriy 31.5.2010, 17:51

Цитата(Kagami @ 31.5.2010, 20:29) *
Естественно, приложение придется переписывать для такого режима работы.
будем считать эту идею, заначкой на чёрный день :)

Автор: dreamcode 31.5.2010, 22:48

Можно так : дописываеш свою библиотеку в конец файла... А при запуску проги извлекаеш библиотеку из файла в каталог с приложением и запускаеш прогу.... )))

или пишеш другую прогу которая будет так делать

Автор: Iron Bug 1.6.2010, 6:55

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

Автор: Litkevich Yuriy 1.6.2010, 8:56

Цитата(Iron Bug @ 1.6.2010, 10:55) *
что статически слинковать mingw нельзя
ну если мы от него отвлечёмся. Чисто теоретически, возможна ли линковка dll'ок внутрь exe'шника?

Автор: kuzulis 1.6.2010, 15:34

Глянь тут: http://www.intmain.ru/ilmerge-gui.html

и поищи в гугле по запросам типа:

Цитата
Merge exe and dll


вот еще тут есть обсуждение: http://www.gotdotnet.ru/forums/2/115833/

говорят что можно с помощью текстового редактора объединить :)

Автор: Litkevich Yuriy 1.6.2010, 16:25

Цитата(kuzulis @ 1.6.2010, 19:34) *
говорят что можно с помощью текстового редактора объединить
не верю, что такое объединение будет работать

Вот http://www.microsoft.com/Downloads/details.aspx?familyid=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en надо будет попробовать, поймёт ли он гнутые dll'ки.

Автор: Iron Bug 2.6.2010, 11:33

Цитата(Litkevich Yuriy @ 1.6.2010, 11:56) *
возможна ли линковка dll'ок внутрь exe'шника?

пишут, что возможна. я в гугле несколько примеров сразу нарыла. но везде примерно одно: засовывают файл в ресурс и подгружают потом из памяти. а так, dll на то и есть динамическая библиотека, чтобы отдельно от exe-шника существовать.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)