rpm3d Ответов: 4

как я могу объединить exe с dll


привет всем телам
ладно
то есть улучшить
у меня есть exe программа которая использует 4 dll
и я хочу связать этот exe и DLL вместе...или объединить
теперь понятно??

OriginalGriff

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

xenotron

В C++ я бы пошел путем преобразования динамических библиотек ссылок (DLL) в статические библиотеки. Таким образом, эти библиотечные проекты статически связаны с вашим exe-файлом (точно так же, как и другие объектные файлы вашего exe-кода).

rpm3d

я знаю пацторписти ...но я использую qt и это очень трудно для меня со статикой

bbirajdar

создание проекта установки

rpm3d

я должен сделать это без установки

BillWoodruff

Рассматривали ли вы возможность поместить файлы в папку и просто сжать или сжать файлы в сжатый файл ? Итак, пользователь распаковывает архив, а затем запускает exe-файл ? Бедный человек-это установщик :)

4 Ответов

Рейтинг:
36

OriginalGriff

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


nv3

Хороший ответ. Самое смешное, что теоретически можно объединить код из нескольких библиотек DLL формата PE и Exes в один файл. Там просто нет инструмента вокруг, чтобы сделать это. По крайней мере, до сих пор мне никто не попадался на пути. По-видимому, до сих пор никому это не было нужно.

[no name]

Почему вы закрыли мое решение? Я потратил несколько часов на создание инструмента, который решает проблему, описанную в вопросе. На что ты намекаешь? Пожалуйста, подумайте о том, чтобы попробовать этот инструмент, прежде чем просто пометить его причиной "контент был опубликован, который является спамом".! ваше решение в любом случае не решает этот вопрос.

Рейтинг:
1

Stefan_Lang

Существует два способа использования библиотек в программе на языке C++ (exe):

1. Вы динамически связываете их: в этом случае у вас есть заголовочные файлы, определяющие API, файлы *.lib, определяющие точки входа, и файлы *.dll с реализацией библиотеки. В этом случае вы добавляете путь к заголовочным файлам в include-path вашего компилятора, #include заголовки, где они вам нужны в вашем коде, и добавьте файлы *.lib в дополнительные библиотеки вашего компоновщика (см. настройки вашего компилятора/компоновщика). Единственное, что вам нужно сделать с файлами *.dll, - это убедиться, что они находятся либо в том же каталоге, что и ваш exe-файл, либо в каталоге, который находится в вашем пути поиска (проверьте переменную окружения $PATH)

2. Вы статически связываете их: в этом случае вы у вас нет файлов *.dll Вместо этого либо ваши файлы*. lib содержат реализацию, либо реализация предоставляется в виде файлов *.obj, либо в виде исходного кода. Поскольку существует так много возможных способов сделать это, обычно существует документация о том, как настроить ваш проект для статической привязки этой библиотеки. Однако если у вас есть реализация только в виде файлов *.dll, то вы не может статически свяжите эту библиотеку с вашей программой!

В любом случае, точные действия, которые вы должны или можете сделать, зависят от имеющихся у вас файлов, а точные настройки зависят от компилятора/компоновщика или IDE, которые у вас есть. Без дополнительной информации мы больше не сможем помочь.


Рейтинг:
1

Ultran Messiski

Просто используйте виртуализатор приложений, например Enigma Virtual Box (бесплатно) или BoxedAppPacker (не бесплатно)
кроме того, если у вас нет проблем с загрузкой библиотек DLL и функций один за другим вручную, вы можете выполнить ручное сопоставление.


Рейтинг:
0

Guirec

если все ваши библиотеки DLL являются сборками .net, то есть простой альтернативный способ
Слияние.Сетевые сборки с использованием ILMerge
[^]

http://ilmergegui.codeplex.com/[^]