информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] Вопрос по линковке 29.03.02 16:17  Число просмотров: 985
Автор: BOBAH Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Складываешь всё это в ресурс, а потом достаешь:
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, но хотелось бы сделать это ещё при линковке.
<programming>
[C++] Вопрос по линковке 29.03.02 15:54  
Автор: Green Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как в процессе линковки включить "сырой" код из некоторого файла?
Проще говоря, присоединить к создаваемому приложению некоторый др. файл, но ещё на этапе линковки, а потом получить возможность читать эти данные. Например (очень глупый пример), хранить в EXE'шнике необходимую DLL и в случае необходимости создавать её на диске.
Знаю, что можно воспользоваться различными тулзами типа SkillRoupe, но хотелось бы сделать это ещё при линковке.
[C++] Ещё один вопрос 29.03.02 18:36  
Автор: Green Статус: Незарегистрированный пользователь
Отредактировано 29.03.02 18:39  Количество правок: 1
<"чистая" ссылка>
В начале кода программы содержится процедурка для MS-DOS, которая выводит на экран сообщение, что данная прога не может работать под DOS.
Можно как-нибудь убрать эту фишку на этапе линковки?
см. MSDN: "Linker Options" - /STUB:filename 30.03.02 00:14  
Автор: Biasha <Бяша> Статус: Member
<"чистая" ссылка>
Ещё один вопрос 29.03.02 22:32  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
В файле содержится префикс, таблицы для загрузчика, и исполняемый код.
Можно как-нибудь убрать эту всю фигню нафиг на этапе линковки?
Класс! :) 30.03.02 00:06  
Автор: Biasha <Бяша> Статус: Member
<"чистая" ссылка>
[C++] Вопрос по линковке 29.03.02 16:17  
Автор: BOBAH Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Складываешь всё это в ресурс, а потом достаешь:
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 файл. А если от линковки к линковке
> этот
> > файл тоже будет меняться, каждый раз заново заносить?
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach