Складываешь всё это в ресурс, а потом достаешь:
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hResInfo = FindResource(hModule, "RCDATA_1", RT_RCDATA);
HGLOBAL hGlobal = LoadResource(hModule, hResInfo);
PVOID pData = LockResource(hGlobal);
DWORD DataSize = SizeofResource(hModule, hResInfo);
> Как в процессе линковки включить "сырой" код из некоторого > файла? > Проще говоря, присоединить к создаваемому приложению > некоторый др. файл, но ещё на этапе линковки, а потом > получить возможность читать эти данные. Например (очень > глупый пример), хранить в EXE'шнике необходимую DLL и в > случае необходимости создавать её на диске. > Знаю, что можно воспользоваться различными тулзами типа > SkillRoupe, но хотелось бы сделать это ещё при линковке.
Как в процессе линковки включить "сырой" код из некоторого файла?
Проще говоря, присоединить к создаваемому приложению некоторый др. файл, но ещё на этапе линковки, а потом получить возможность читать эти данные. Например (очень глупый пример), хранить в EXE'шнике необходимую DLL и в случае необходимости создавать её на диске.
Знаю, что можно воспользоваться различными тулзами типа SkillRoupe, но хотелось бы сделать это ещё при линковке.
[C++] Ещё один вопрос29.03.02 18:36 Автор: Green Статус: Незарегистрированный пользователь Отредактировано 29.03.02 18:39 Количество правок: 1
В начале кода программы содержится процедурка для MS-DOS, которая выводит на экран сообщение, что данная прога не может работать под DOS.
Можно как-нибудь убрать эту фишку на этапе линковки?
см. MSDN: "Linker Options" - /STUB:filename30.03.02 00:14 Автор: Biasha <Бяша> Статус: Member
Складываешь всё это в ресурс, а потом достаешь:
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hResInfo = FindResource(hModule, "RCDATA_1", RT_RCDATA);
HGLOBAL hGlobal = LoadResource(hModule, hResInfo);
PVOID pData = LockResource(hGlobal);
DWORD DataSize = SizeofResource(hModule, hResInfo);
> Как в процессе линковки включить "сырой" код из некоторого > файла? > Проще говоря, присоединить к создаваемому приложению > некоторый др. файл, но ещё на этапе линковки, а потом > получить возможность читать эти данные. Например (очень > глупый пример), хранить в EXE'шнике необходимую DLL и в > случае необходимости создавать её на диске. > Знаю, что можно воспользоваться различными тулзами типа > SkillRoupe, но хотелось бы сделать это ещё при линковке.
[C++] Вопрос по линковке29.03.02 16:52 Автор: Green Статус: Незарегистрированный пользователь
А как сделать так, чтоб файл добавлялся в ресурсы каждый раз при линковке сам, а не заносить его ручками. Ведь как я понимаю, усли я помещаю его в ресурсы, то он при этом записывается в .RC файл. А если от линковки к линковке этот файл тоже будет меняться, каждый раз заново заносить?
И ещё. Можно как-нибудь заносить этот файл в ресурсы без .RC - файла, с помощью каких-нибудь дирректив предпроцессора? Уж очень хочется объемов небольших, а RC раздует код готового приложения до неприличного.
> Складываешь всё это в ресурс, а потом достаешь: > HMODULE hModule = GetModuleHandle(NULL); > HRSRC hResInfo = FindResource(hModule, "RCDATA_1", > RT_RCDATA); > HGLOBAL hGlobal = LoadResource(hModule, hResInfo); > PVOID pData = LockResource(hGlobal); > DWORD DataSize = SizeofResource(hModule, hResInfo);
[C++] Вопрос по линковке29.03.02 18:25 Автор: BOBAH Статус: Незарегистрированный пользователь
Добавляешь в проект .rc-файл, в нем пишешь оду единственную строку:
IDR_RT_RCDATA1 RT_RCDATA DISCARDABLE "filename.dll"
а в свой .cpp добавь:
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/MERGE:.data=.text")
#pragma comment(linker,"/MERGE:.rsrc=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
> А как сделать так, чтоб файл добавлялся в ресурсы каждый > раз при линковке сам, а не заносить его ручками. Ведь как я > понимаю, усли я помещаю его в ресурсы, то он при этом > записывается в .RC файл. А если от линковки к линковке этот > файл тоже будет меняться, каждый раз заново заносить?
[C++] А как убрать нули в конце?29.03.02 18:28 Автор: Green Статус: Незарегистрированный пользователь
В получаемом файле куча нулей в конце. Их можно как-нибудь убрать на линковке?
> Добавляешь в проект .rc-файл, в нем пишешь оду единственную > строку: > IDR_RT_RCDATA1 RT_RCDATA DISCARDABLE > "filename.dll" > > а в свой .cpp добавь: > #pragma comment(linker,"/MERGE:.rdata=.text") > #pragma comment(linker,"/MERGE:.data=.text") > #pragma comment(linker,"/MERGE:.rsrc=.text") > #pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX > /IGNORE:4078") > > > А как сделать так, чтоб файл добавлялся в ресурсы > каждый > > раз при линковке сам, а не заносить его ручками. Ведь > как я > > понимаю, усли я помещаю его в ресурсы, то он при этом > > записывается в .RC файл. А если от линковки к линковке > этот > > файл тоже будет меняться, каждый раз заново заносить?