Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: DLL + EXE в одном EXE  (Прочитано 16316 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« : 01-02-2012 17:19 » 

Суть вопроса отражена в названии темы, собственно есть dll которую не хочется тягать за exe.  Как выйти из положения?
P.S. Погуглив нашел много всего под C# и даже под С++, но за 300 евро  Улыбаюсь
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 01-02-2012 18:25 » 

Телепаты в отпуске.

При разработке преобразовать dll в lib. Сложности там могут быть только при наличии особенностей инстанцирования dll и собственных глобальных переменных, совпадающих именами с аналогами в exe.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
v2
Помогающий

ua
Offline Offline

« Ответ #2 : 01-02-2012 18:48 » 

Меня Гугла не спрашивала, - у меня есть за 200$ Ага
Записан
zubr
Гость
« Ответ #3 : 01-02-2012 19:12 » 

1. dll загрузить в ресурс exe или в оверлей.
2. При работе exe выгружает dll из ресурса/оверлея на диск или более крутой вариант - в память exe.
Тут где то на форуме я выкладывал пример загрузки exe в память, с dll механизм аналогичный, отличие только в том, что надо еще таблицы экспорта загрузить.
Записан
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #4 : 01-02-2012 21:54 » 

zubr,  в память было бы очень круто. Поресерчу форум. Просвети пожалуйста зеленого, что такое оверлей? Улыбаюсь
Dimka, исходников нету - преобразовывать нечего.
v2, ищется шаровой вариант.
Записан
zubr
Гость
« Ответ #5 : 02-02-2012 03:39 » 

Оверлей - часть исполняемого файла, находящаяся в его конце и не описанная в его заголовке, а соответственно не загружаемая в память загрузчиком.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 02-02-2012 06:38 » 

Цитата: dark_rain
исходников нету - преобразовывать нечего.
Тогда о чём разговор? То, что zubr говорит, как минимум подразумевает редактирование ресурсов и пересборку.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 02-02-2012 09:32 » 

dark_rain, ну, а если чисто тупо сделать загрузчик а ля лоадера MSI? Те делаешь экзешник-лоадер, к нему цепляешь свой ЕХЕ и DLL. Размеры всех троих известны. Лоадер при старте вытаскивает "из себя" оба файла например в темп и запускает ЕХЕ. Потом следит за ним. Когда он завершается подчищает всё.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #8 : 02-02-2012 09:41 » 

Dimka, немного неправильно сказал, нет исходников .dll-ки, exe-шник мой. В dll находится одна либа, которую можно юзать бесплатно, но исходиков ее нет, нужно тягать ее за собой и ложить рядом с exe. Exe - это мой инсталлятор, в котором заюзанны красивости из dll. Юзер качает инсталлятор, хочет заинсталлить, но вот беда - dll'ку-то не скачал.  
В принципе, я могу засунуть ее(dll) в ресурсы, и развернуть на диск, но если юзер скачает например инсталлятор в корень C:\? На xp прокатит, но vista и seven пошлют меня далеко с ошибкой ERROR_ACCESS_DENIED.

Добавлено через 3 минуты и 40 секунд:
Джон, это крайний вариант, по иронии exe-шник является бутстраппером, который извлекает из себя msi в темп, то-есть получиться так, я извлекаю dll и exeшник, который извлекает из себя msi. Как в сказке про Кащея-бессмертного: иголка в яйце, яйцо в утке... и так по обратной рекурсии до сундука Улыбаюсь

Добавлено через 16 минут и 37 секунд:
zubr,  не могу найти твой пример Жаль поделись пожалуйста кусочком кода.
« Последнее редактирование: 02-02-2012 10:02 от dark_rain » Записан
zubr
Гость
« Ответ #9 : 02-02-2012 10:04 » 

dark_rain, а что мешает длл динамически загружать? Тогда ты ее можешь располагать где угодно, в том же темп.

Добавлено через 10 минут и 16 секунд:
https://forum.shelek.ru/index.php/topic,7815.msg116467.html#msg116467
« Последнее редактирование: 02-02-2012 10:15 от zubr » Записан
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #10 : 02-02-2012 10:37 » 

zubr, попробовал динамическую загрузку, не прокатило, требует dllку именно возле себя, походу в dllке есть какие то зависимости.


Добавлено через 16 секунд:
zubr, спс за ссылку, буду пробовать.
« Последнее редактирование: 02-02-2012 10:38 от dark_rain » Записан
zubr
Гость
« Ответ #11 : 02-02-2012 11:09 » 

dark_rain, при неявном связывании можно, как вариант, задать текущую директорию процесса SetCurrentDirectory или установить переменную окружения процесса PATH, так как загрузчик Windows производит поиск путей к длл в том числе и по этим параметрам.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #12 : 02-02-2012 11:32 » 

Джон, это крайний вариант, по иронии exe-шник является бутстраппером

 Жжешь  Класс!

Так подожди, исходники бутстраппера же есть в комплекте WiX, добавь туда свою длл и всё.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #13 : 02-02-2012 13:05 » 

Джон, у меня бутстраппер лучше чем в wix Улыбаюсь
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #14 : 02-02-2012 15:46 » 

Ну так а тогда какие problems?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #15 : 02-02-2012 16:13 » 

Джон,  no problems. Разрезолвил, как не банально, 7z, получилось по-красоте Улыбаюсь
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #16 : 02-02-2012 16:29 » 

Ну тогда это не в тему С++. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #17 : 02-02-2012 16:48 » new

Thanks всем за помощь.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines