Версия для печати темы
Форум на 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)