![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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