Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Build и Compile


MTsv DN ©   (2009-05-22 20:43:00) 

Всем привет.

Не знаю насколько это сложный вопрос, но меня он обескуражил. Есть код:
library KOLLib;

uses
 KOL;

begin
end.

Если сделать CTRL+F9 (Compile) на выходе получает файл 17920 байт. А если сделать SHIFT+F9 (Build) на выходе получает файл 16896 байт.
Как оказалось во втором случае отсутствует секция релоков в DLLке, а она насколько я знаю для библиотеки довольно важна. Так вот вопрос:

1. Куда деваются релоки?
То что это "косяк" KOL (по мне это "косяк", я три дня не мог понять почему у меня DLLки не подгружаются) - 100%.
2. Как это подправить?


D[u]fa   (2009-05-31 11:28:00) [1]

Видимо включено на авось было, в младших версиях делфи так вообще не заметно было


SPeller   (2009-05-31 07:32:00) [2]

Да, дело было в этом. Закомментил и проблема ушла. Имхо, лучше такое по дефолту не включать. А то мало того, что по build и compile разное выходит, так еще и после внесения изменений и запуска на отладку по F9 происходит то же, что и по build - обрезанный бинарник и невозможность загрузить длл.


SPeller   (2009-05-28 10:52:00) [3]

А я мучаюсь и не могу понять какого Хэ в д 2009 Build и Compile выдает разные бинарники дллки, причем по Build длл не грузится другой программой... А оно "вот оно чё михалыч!!!". Дома сегодня проверю.


D[u]fa   (2009-05-27 14:35:00) [4]

дык и как это условной директивой пропишешь то? %)


MTsv DN   (2009-05-26 23:50:00) [5]

А какие извращения то? По первому некомментированному слову в DPR файле. А так, если в глубь файла не лезть, то по PE заголовку DLL от EXE вообще одним битом отличается...


D[u]fa   (2009-05-24 15:46:00) [6]

Самое обидное, что способ (без извращений) узнать тип проекта(ехе или длл) я так и не нашел...


MTsv DN   (2009-05-24 09:22:00) [7]

2 D[u]fa
Да, уж, называется, попробуй отыщи... Спасибо...


D[u]fa   (2009-05-23 12:04:00) [8]

проверил.. все легко..
есть файл KOLDEF.INC в нём со 128 строки такой код:

// TODO: check DLL project - хорошая надпись))
{$IFNDEF NO_STRIP_RELOC}
 // by Thaddy de Koning:
 {$IFDEF _D2006orHigher}
 // strips relocs, like stripreloc.exe does
 {$SetPEFlags 1} - убрать релоки
 {$ENDIF}
{$ENDIF}


D[u]fa   (2009-05-23 11:59:00) [9]

Релоки для длл очень важны. А разве если убрать КОЛ из списка, то релоки не пропадут так же?

по-моему баг компилятора это..


MTsv DN   (2009-05-23 08:51:00) [10]

В первом, читать: "8. Восстановление таблицы настроек адресов (FixUp Table или Relocations)".
Во втором, читать Сообщение 2.


MTsv DN   (2009-05-23 08:49:00) [11]

> Вообще-то не важна.
Не хочу спорить. Навскидку, поиск в гугле "релоки в DLL", выдал:
http://qunpack.ahteam.org/?p=11
http://4pda.ru/forum/index.php?showtopic=66199&pid=1343802&mode=threaded&start=
и еще кучу всего, т.ч. не надо офтопить, а...вопрос был в другом. Куда девает релоки подключение файла KOL.PAS? Если по сути сказать нечего, то и не надо...


Игорь Шевченко   (2009-05-23 00:05:00) [12]


> Как оказалось во втором случае отсутствует секция релоков
> в DLLке, а она насколько я знаю для библиотеки довольно
> важна


Вообще-то не важна. Вообще-то если у тебя загружается куча DLL, можно заранее настроить их базовые адреса утилитой rebase от ms


Наверх

Титульная страница Поиск, карта сайта Написать письмо