Как dll преобразовать в exe

Обновлено: 01.07.2024

Загрузка. Пожалуйста,
подождите.

Репутация: нет
Всего: 3

Как включить dll в exe файл? чтобы он был 100% независим.

Репутация: 24
Всего: 151

"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ

Leprechaun Software Developer

Репутация: 206
Всего: 534

Репутация: 47
Всего: 159

Конечно, тема про dll здесь не красиво смотрится, но раз уж её модераторы на перемещают, то встречный вопрос: 100 % Независимым от кого(чего)?

нет времени думать - нужно писать КОД!

Leprechaun Software Developer

Репутация: 206
Всего: 534

Репутация: нет
Всего: 3

Я имел в виду dll-и который нужны для полной рабаты проги Java.
На пример: systray4j.dll чтобы пихать прогу в трей.

Leprechaun Software Developer

Репутация: 206
Всего: 534

О! У меня начали проявляться, зачатки телепатии

Загружен может быть только файл с расширением dll (ну или so для *nix систем). Поэтому единсвенный выход, это распростанять dll отдельно, ну или при запуске извлекать ее из exe и сохранять в текущем каталоге.

Репутация: нет
Всего: 3

Репутация: 47
Всего: 159

Мне кажется, что подобные решения выглядят крайне некрасиво.
Зачем запихивать dll в exe если потом её снова нужно от туда извлекать.
Для распространения программ обычно инсталяторы используют, ну или на крайний
случай - архиватор.

нет времени думать - нужно писать КОД!

Leprechaun Software Developer

Репутация: 206
Всего: 534

Вообщем согласен с MoonCat, это не есть нормально. Лучше сделать инсталятор, но если очень надо.

Вытащить dll, можно как и любой другой ресурс:

Репутация: нет
Всего: 3

LSD
А то что это внутри архива. никого не интересует?

MoonCat
Согласен, но.
Если ты делаешь прогу для себя то куда не шло, пользуйся чем хочешь и как хочешь(я имею в виду ломанную прогу).
А если это для другого то стараешься, во бсяком случае компелировать, чем то безплатным (ну или конечно можно купить прогу).

Leprechaun Software Developer

Репутация: 206
Всего: 534

Не понял вопрос, о каком архиве ты говоришь?

Этот код позволяет вытащить любой файл из jar архива, или exe файла созданного JBuilder.

Есть бесплатные инсталяторы, например Nullsoft Scriptable Install System. Очень неплохой инсталятор, Winamp использует именно его.

Репутация: нет
Всего: 3

  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

[ Время генерации скрипта: 0.1383 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Я создаю программу на C ++, но хочу предложить пользователю только EXE-файл. Однако я использую библиотеки (в том числе curl), в которых есть некоторые библиотеки DLL. Можно ли скомпилировать эти dll в файл .exe?

Я использую Code :: Blocks и mingw.

Для этого вам понадобится статическое связывание. Для этого необходимо, чтобы все ваши библиотеки (и библиотеки, от которых они рекурсивно зависят) были доступны как статические библиотеки. Имейте в виду, что размер вашего исполняемого файла будет большим, поскольку он будет нести весь код из этих статических библиотек. Вот почему в первую очередь были изобретены разделяемые библиотеки (DLL), чтобы иметь возможность совместно использовать общий код между приложениями. Однако это не всегда работает так хорошо в Windows.

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

В DDJ есть статья за 2002 год, в которой может быть то, что вы хотите:

В основном он использует комбинацию связывания с DLL с помощью функции «отложенной загрузки» MSVC и упаковки DLL как встроенного ресурса в EXE. Затем DLL автоматически извлекается во время выполнения при первом вызове одного из экспортов.

Я не использовал эту технику, поэтому не могу сказать, насколько хорошо она работает, но это определенно кажется отличной идеей.

Вы можете использовать ILMerge

Однажды я наткнулся на утилиту dll2lib. Интересная штука, хоть и дорогая. Он позволяет преобразовать практически любую dll в статическую библиотеку, которая позже может быть связана с вашим приложением для создания надежного exe. IIRC, бесплатная версия покажет определенное уведомление (MessageBox) при входе в функцию из такой сгенерированной библиотеки.

Вам понадобятся специальные инструменты для упаковки, такие как XBundler.

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

Я новичок в C ++ и CODE :: BLOCKS (примерно через неделю), и у меня была такая же проблема. Ответы хороши, но их реализация не объясняется для такого нуба, как я. (Как сказать пещерному человеку, чтобы тот вставил ключ в замок зажигания. «Что такое КЛЮЧ? Что такое ЗАЖИГАНИЕ?»). После того, как я достаточно повозился, я скомпилировал (без каламбура) следующее решение:

В меню CODE :: BLOCKS (у меня v20.03) нажмите «Настройки», затем «Компилятор . ».

Слева нажмите «Глобальные настройки компилятора» (по умолчанию).

На вкладке «Настройки компилятора» установите флажки рядом с:
статическая библиотека libgcc [-статическая-libgcc]
статическая библиотека libstdc ++ [-static-libstdc ++]

На вкладке «Параметры компоновщика» введите следующее в поле «Другие параметры компоновщика:»:
-static -lpthread

Нажмите «ОК», и вы золотые! Ваш скомпилированный C ++ EXE может работать как автономный.

Я попробовал это, составив пару своих учебных проектов, и это сработало. Это добавляет около 2,3 МБ к размеру EXE. Никаких обещаний, что это будет работать со всеми вашими проектами, только то, что пока это работает для меня.


ОБНОВЛЕНИЕ, 12.01.2021 - Уменьшите размер EXE !:

На вкладке «Настройки компилятора» прокрутите вниз до «Оптимизация» и проверьте:
Удалите все символы из двоичного файла (минимизирует размер) [-s]

Это уменьшило один из моих скомпилированных EXE-файлов с 2354k до 820k!

В общем нет. У DLL есть особое поведение, которое нетривиально, такое как получение Loader Lock при загрузке и вызов DllMain в этих точках. Хотя теоретический компоновщик может организовать вызов каждого DllMain из приложения main (), этого не произойдет при Loaded Lock. Эта блокировка загрузчика находится под контролем ОС. Кроме того, библиотеки DLL уведомляются о новых потоках через свою DLLMain, и это тоже почти невозможно подделать.

Есть задача: создать .dll, которая будет компилировать код .bat-файла, находящегося в textbox1. Как это сделать?

141 1 1 золотой знак 2 2 серебряных знака 9 9 бронзовых знаков На пальцах разъясните. Что скомпилировать (пример), во что? Он хочет написать свой компилятор и засунуть его в DLL , что бы на вход длл подавался БАТ а на выходе имелся екзешник. Удачи. @Влад: ну, скажите нам зачем именно вам нужен именно exe-файл. Может, тогда мы сможем лучше понять, что вам на самом деле надо. Потому что сейчас, честно говоря, кажется, что вам нужно что-то гораздо проще. И ещё, что вы будете делать с DLL-кой? Она ж сама по себе не запустится. @alexlz, это ссылка на перевод юмористической статьи. Не смотря на то, что в любой шутке есть доля правды, вы уверены, что стоит воспринимать указанную мной статью на полном серьезе? Я, конечно, понимаю, кто на брейнфаке кодил, тот в цирке не смеется, но неужели все так запущено?

@teanЫЧ, по сути Вы наверняка правы, только вот сформулированная автором задача имеет решение (хотя автор наверняка думал не о нем).

Пишем на C/C++ компилятор языка BAT-файлов и реализуем его в виде функции, которую помещаем в .dll. На выходе (естественно линкер вызывается из той же функции) получаем .exe в заданном файле.

43.4k 4 4 золотых знака 41 41 серебряный знак 109 109 бронзовых знаков

Для начала:
1. почитайте про компиляцию и компиляторы, судя по всему вы не до конца понимаете, что это такое
2. почитайте про dll, ---//---
3. почитайте про bat-файлы, ---//---

*ссылки на педовикию могут быть не самыми удачными, но в них есть ссылки на другие источники. В любом случае, при желании можно погуглить.

создать .dll, которая будет компилировать

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

будет компилировать код .bat-файла, находящегося в textbox1

У вас код в текстбоксе находится или батник? (чего только не бывает в нашем дремучем лесу)

Судя по всему, описанная Вами задача не подлежит решению. Если Вы все-таки считаете, что это можно сделать, то нормально опишите то, что вы хотите сделать, ибо мы ничего не поняли.

Чем открыть DLL для редактирования

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

Открываем DLL-файлы для редактирования

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

Способ 1: Resource Hacker

    Скачайте Resource Hacker с официального сайта и произведите простую установку. После этого запустите софт и переходите к открытию файла.

Переход к открытию файла для редактирования в программе Resource Hacker

Выбор файла для открытия в программе Resource Hacker

Иерархия содержимого файла DLL в программе Resource Hacker

Редактирование исходного кода открытого файла в программе Resource Hacker

Переключение в бинарный вид исходного кода в программе Resource Hacker

Сохранение отредактированного файла в доступном формате в программе Resource Hacker

Способ 2: Hex Workshop

Еще один популярный редактор DLL-файлов имеет название Hex Workshop, однако реализован он с определенными отличиями от предыдущего софта. Связаны эти особенности и с процедурой редактирования, которая выполняется немного сложнее из-за отображения кода только в бинарном виде, но с разными кодировками.

    После инсталляции запустите Hex Workshop и приступайте к открытию файла.

Переход к открытию файла в программе Hex Workshop

Открытие файла для редактирования в программе Hex Workshop

Просмотр содержимого файла в программе Hex Workshop

Просмотр сведений отдельного блока исходного кода в программе Hex Workshop

Панель инструментов для редактирования файлов в программе Hex Workshop

Способ 3: Доступная среда разработки

Сейчас практически все программисты создают и редактируют код в специальной среде разработки. Ею выступает программное обеспечение, заточенное под выполнение работ с кодом. Обычно там присутствуют вспомогательные инструменты, упрощающие работу с проектами. Некоторые из них справляются с открытием элементов формата DLL и позволяют их редактировать. Сейчас мы хотим взять за пример Embarcadero RAD Studio последней версии.

    Запустите Embarcadero RAD Studio или любую другую подобную среду разработки и переходите к запуску файла.

Переход к открытию файла для редактирования в программе Embarcadero RAD Studio

Выбор файла для редактирования в программе Embarcadero RAD Studio

Изменение сведений о файле и его вида в программе Embarcadero RAD Studio

Отображение файла в бинарном виде в программе Embarcadero RAD Studio

Как можно заметить, подобные редакторы отображают содержимое немного в другом виде, что поможет во время особого редактирования, например, изменения вспомогательных описаний или сохраненного по умолчанию расположения. Если Embarcadero RAD Studio вас не устраивает, рекомендуем ознакомиться с другим подобным софтом в отдельном нашем обзоре от другого автора, перейдя по указанной ниже ссылке.

Способ 4: Sublime Text

Как известно, Sublime Text является не совсем обычным текстовым редактором. Его основная функциональность нацелена на работу с исходным кодом и его компиляцией. В этом софте подсвечивается синтаксис и происходит автоматическое определение языка. Что касается открытия DLL, то сделает он это немного лучше, чем привычные текстовые редакторы.

Открытие файла для редактирования в программе Sublime Text

Просмотр содержимого DLL-файла в программе Sublime Text

Попытка компиляции DLL-файла в программе Sublime Text

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

Теперь вы знакомы с методом открытия рассмотренного формата файлов для редактирования и дальнейшего сохранения. Не рекомендуем осуществлять эту операцию с системными объектами и сохранять их в прежнем расположении, поскольку это может вызвать непоправимые ошибки ОС.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Читайте также: