Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.04.29;
Скачать: CL | DM;

Вниз

Build и Compile   Найти похожие ветки 

 
MTsv DN   (2009-05-22 20:43) [0]

Всем привет.

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

uses
 KOL;

begin
end.

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

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


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


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


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


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

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


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

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


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

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

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


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

проверил.. все легко..
есть файл 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}


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

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


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

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


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

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


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

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


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

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


 
SPeller ©   (2009-05-31 07:32) [11]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2012.04.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.007 c
15-1324401094
SQLEX
2011-12-20 21:11
2012.04.29
Сосед президента. Обман или есть такой дом?


2-1325448187
Cobalt
2012-01-02 00:03
2012.04.29
Windows.GetScrollInfo


15-1325052694
Медвежонок Пятачок
2011-12-28 10:11
2012.04.29
Камень в огород (джава комьюнити)


2-1325418734
3asys
2012-01-01 15:52
2012.04.29
переход с Indy9 на Indy10


2-1325688285
Scott Storch
2012-01-04 18:44
2012.04.29
обрезаются символы при назначении значения полю