Скажите, а есть ли какой способ запихнуть dll в ресурс, так, чтоб безгеморойно его подгружать? Т.е. есть ехе плюс куча dll. Хотелось бы оформить все в виде одного единственного ехе.
Оформить все дллки как ресурсы своего типа, потом при запуске аккуратно вытаскивать их в temp и подгружать. Можно оформить вытаскивание в виде функции, тогда достаточно будет просто написать в начале Extract("one.dll"); Extract("another.dll");
мне больше нравится перевести длл в что-то типа 0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, а потом BYTE rsrc_service[ ] = { #include "service.inc" }; и не надо никаких ресурсов
в дистрибутиве ufmod есть утилита eff, которая в числе прочего умеет генерить файл формата C/C++ из любого входного файла и поддерживает командную строку, так что смело можно пихать в батники
Берете ResHacker (или любую другую программу редактирования ресурсов) - и пхаете туда что угодно. Или можно и самому написать программку из трех строк для впихивания в ресурсы файла.
Я в таких случаях использую XLoadLibrary ( http://www.rsdn.ru/article/baseserv/peloader.xml ). Можно из ресурса сразу в память записать. Правда есть некоторые ограничения, которые в статье озвучены.
z0mailbox Сколько у тебя будет файл на 100 метров преобразовываться в вид 0x4D, 0x5A, .... ? И каков будет размер этого .h файла... Ресурсы гораздо проще.
на 100 метровый файл при худших раскладах уйдет не более 20 секунд, если написать специализированную утиль то и того меньше
Asterix При перекодировке в вид, предложененый z0mailbox? На какой системе? Проц? Тогда вопрос, зачем его преобразовывать в этот вид, если компилятору все равно потом собирать его обратно в бинарник. Нелогично. Лучше бинарник сразу в бинарном виде пихуть в ресурсы
Great а ситема тут причем? XP, проц AMD64 3200+, который работает у меня на частоте 1000МГц т.к. включен Cool'n'Quiet, перекодировал с помощью eff ЗЫ: А кто будет 100 меговый файл в тело проги пихать?
Ну вообще действительно больше 10-15 метров пихать в прогу бессмысленно=\ лучше отдельно с ней давать.
Пихать 18 метров чего-нибудь, обработанного bin2db, в секцию данных/кода - действительно глупо, всё ж в память грузится… А вот оверлеем, а-ля sfx/nsis/flash - запросто! Главное - не полениться утоптать, али закриптовать всё хорошенько. И ещё - не создавать временных файлов. (всякий раз улыбаюсь, когда нахожу muzika.xm в \Win\System32\)