dark_rain
|
|
« : 01-02-2012 17:19 » |
|
Суть вопроса отражена в названии темы, собственно есть dll которую не хочется тягать за exe. Как выйти из положения? P.S. Погуглив нашел много всего под C# и даже под С++, но за 300 евро
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 01-02-2012 18:25 » |
|
Телепаты в отпуске.
При разработке преобразовать dll в lib. Сложности там могут быть только при наличии особенностей инстанцирования dll и собственных глобальных переменных, совпадающих именами с аналогами в exe.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
v2
Помогающий
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
|
|
« Ответ #4 : 01-02-2012 21:54 » |
|
zubr, в память было бы очень круто. Поресерчу форум. Просвети пожалуйста зеленого, что такое оверлей? Dimka, исходников нету - преобразовывать нечего. v2, ищется шаровой вариант.
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #5 : 02-02-2012 03:39 » |
|
Оверлей - часть исполняемого файла, находящаяся в его конце и не описанная в его заголовке, а соответственно не загружаемая в память загрузчиком.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #6 : 02-02-2012 06:38 » |
|
исходников нету - преобразовывать нечего. Тогда о чём разговор? То, что zubr говорит, как минимум подразумевает редактирование ресурсов и пересборку.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Джон
просто
Администратор
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
|
|
« Ответ #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 »
|
Записан
|
|
|
|
|
dark_rain
|
|
« Ответ #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 производит поиск путей к длл в том числе и по этим параметрам.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
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
|
|
« Ответ #13 : 02-02-2012 13:05 » |
|
Джон, у меня бутстраппер лучше чем в wix
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
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
|
|
« Ответ #15 : 02-02-2012 16:13 » |
|
Джон, no problems. Разрезолвил, как не банально, 7z, получилось по-красоте
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
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
|
|
« Ответ #17 : 02-02-2012 16:48 » |
|
Thanks всем за помощь.
|
|
|
Записан
|
|
|
|
|