-
Всем привет. Не знаю насколько это сложный вопрос, но меня он обескуражил. Есть код: library KOLLib;
uses
KOL;
begin
end. Если сделать CTRL+F9 (Compile) на выходе получает файл 17920 байт. А если сделать SHIFT+F9 (Build) на выходе получает файл 16896 байт. Как оказалось во втором случае отсутствует секция релоков в DLLке, а она насколько я знаю для библиотеки довольно важна. Так вот вопрос: 1. Куда деваются релоки?То что это "косяк" KOL (по мне это "косяк", я три дня не мог понять почему у меня DLLки не подгружаются) - 100%. 2. Как это подправить?
-
> Как оказалось во втором случае отсутствует секция релоков > в DLLке, а она насколько я знаю для библиотеки довольно > важна
Вообще-то не важна. Вообще-то если у тебя загружается куча DLL, можно заранее настроить их базовые адреса утилитой rebase от ms
-
-
В первом, читать: "8. Восстановление таблицы настроек адресов (FixUp Table или Relocations)". Во втором, читать Сообщение 2.
-
Релоки для длл очень важны. А разве если убрать КОЛ из списка, то релоки не пропадут так же?
по-моему баг компилятора это..
-
проверил.. все легко.. есть файл 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}
-
2 D[u]fa Да, уж, называется, попробуй отыщи... Спасибо...
-
Самое обидное, что способ (без извращений) узнать тип проекта(ехе или длл) я так и не нашел...
-
А какие извращения то? По первому некомментированному слову в DPR файле. А так, если в глубь файла не лезть, то по PE заголовку DLL от EXE вообще одним битом отличается...
-
дык и как это условной директивой пропишешь то? %)
-
А я мучаюсь и не могу понять какого Хэ в д 2009 Build и Compile выдает разные бинарники дллки, причем по Build длл не грузится другой программой... А оно "вот оно чё михалыч!!!". Дома сегодня проверю.
-
Да, дело было в этом. Закомментил и проблема ушла. Имхо, лучше такое по дефолту не включать. А то мало того, что по build и compile разное выходит, так еще и после внесения изменений и запуска на отладку по F9 происходит то же, что и по build - обрезанный бинарник и невозможность загрузить длл.
-
Видимо включено на авось было, в младших версиях делфи так вообще не заметно было
|