| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > создание автономного exe'шника |
| Автор: Zyxel 26.8.2011, 18:33 |
| Есть проект, поддерживющий работу с большим количеством устройств. В папке с exe'шником проекта находятся dll'ки - драйвера устройств. Помимо того, что это просто неудобно, при переносе на др. компы возникают еще и проблемы со студийными библиотеками типа msvcr*.dll Работаю c VC++ 2005. Подскажите, как сделать, чтобы exe файл проекта был автономен и не требовал наличия dll в своем каталоге? ну...что-то типа этого... http://fallengamer.livejournal.com/69536.html вроде то, что нужно, но ничего не понятно |
| Автор: kiler4747 26.8.2011, 21:22 |
| Создай инсталлер. В студии при выборе типа проекта выбрать Другой тип проекта, а там установка. (VC++2010) |
| Автор: Zyxel 26.8.2011, 22:05 |
| Если правильно понимаю, инсталлер просто установит exe-файл и необходимые для его работы dll. Это и так скопировать можно. Вопрос в том, как все это интегрировать в один исполнимый файл? Руководство именно так поставило задачу. Я еще сама не разобралась насколько это целесообразно ... инфа по этому вопросу какая-то обрывочная( |
| Автор: volatile 26.8.2011, 23:38 |
Zyxel, нужно проект собирать статически. Для этого нужны все исходники dll. Собираете их как статические либы. Подключаете их к своему проекту, и компилируете в один исполнимый файл. Если исходников dll нет, ничего не выдет. Хотя видел где-то трюки с объединением dll с исполнимым файлом в один екзешник, но это хак., и в серьезном проекте такое делать не рекомендую. Полюбому, ничего путевого не выдет из этого ... И к С++ это никокого отношения не имеет. |
| Автор: Zyxel 27.8.2011, 00:49 | ||
обычно так и делаю, но в данном случае большинства исходников dll нет... Таскать за собой либы совершенно нормальный подход, тем не менее если нельзя все объединить в один ехе-шник, мне нужно аргументированно объяснить руководителю почему. Он уверен в обратном. В нете эта тема широко не обсуждается, тем не менее то, что нашла крутится вокруг платформы .NET: сборки, РЕ-файлы (portable executable)... цитирую статью(ссылка на статью в первом посте) "...В статье рассказывается, как создавать такие автономные программы из одного файла. Разобран пример как со сжатием зашить библиотеку AutoMapper в программу и как ее потом достать и использовать... ...Итак, у нас есть работающий проект, использующий сторонние библиотеки. Хочется, чтобы exe файл проекта был автономен и не требовал наличия зависимых dll в своем каталоге.Полученную ранее архивированную сборку добавляем в ресурсы проекта через Project Properties-Resources-Files. Студия при добавлении ресурса генерирует код, который позволяет использовать добавленный ресурс через Resources класс... ...Включение зависимых сборок в ресурсы самой программы позволяет ей работать автономно. Для запуска требуется один лишь exe файл. Это важно для служебных утилит, сразу готовых к использованию. Фактически такие автономные программы не требуют установки и их удобно передавать по сети или хранить на флешке..." Т.е. получается DLL каким то образом помещаем в сборку и как ресурс добавляем в проект??? " |
| Автор: volatile 27.8.2011, 01:28 |
| Zyxel, ну есть еще программки (типа "thisinstall"), которые делают портабельный софт из непортабельного. Они вообще все что угодно в один екзешник могут запихнуть. |
| Автор: kiler4747 27.8.2011, 12:16 |
| думаю это поможет http://www.3dnews.ru/software-news/616082 Добавлено через 4 минуты и 45 секунд если нужно ипользовать библиотеки .NET то вроде ничего не получится, т.к. при установке .NET Fraemwork 4 подстраивается под систему и железо. |
| Автор: Zyxel 27.8.2011, 14:10 |
| Спасибо, MoleBox скачала, на работе установлю, посмотрю что за штука. Этот вопрос сейчас двигаю по двум направлениям 1. упаковка в автономный ехе-шник с помощью сторонней утилиты, типа MoleBox. Здесь все понятно, только есть сомнение в "солидности" этого способа. 2. создание автономного ехе на уровне компоновки проекта. Здесь начинается чем дальше в лес, тем ну его на фиг) много тем и никакой конкретики( Что думаете относительно "коректности" первого способа и реальности второго? |