Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2012.04.29;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "KOL";
Текущий архив: 2012.04.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.003 c
2-1325325464
Gu
2011-12-31 13:57
2012.04.29
simplesharemem


15-1324577119
Artem
2011-12-22 22:05
2012.04.29
Как сменить диск при открытии файла в FreePascal?


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


2-1325588259
Валерий
2012-01-03 14:57
2012.04.29
Запретить перемещение окна зная его handle


15-1324593730
alexdn
2011-12-23 02:42
2012.04.29
Open source проект





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский