powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Компиляция obj файлов
7 сообщений из 32, страница 2 из 2
Компиляция obj файлов
    #39665984
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp,

"Лозунг гарный. А цель - погана" - (с).
...
Рейтинг: 0 / 0
Компиляция obj файлов
    #39666191
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем в итоге я таки подебил [ага] MinGW64 и заставил его сгенерить мне правильные .obj файлы.

Как выяснилось, gcc неправильно собирает COFF obj'ы, в результате чего некоторые функции в них не видны из дельфей. Вылечивается перекодировкой в ELF и обратно при помощи ObjConv'а. Ну и имена некоторых импортов надо им же пофиксить - убрать префиксы типа '__imp_' и '__ms'.

После этого всё собирается, как минимум, без ошибок.
...
Рейтинг: 0 / 0
Компиляция obj файлов
    #39666195
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
alekcvpВ общем в итоге я таки подебил [ага] MinGW64 и заставил его сгенерить мне правильные .obj файлы.

Как выяснилось, gcc неправильно собирает COFF obj'ы, в результате чего некоторые функции в них не видны из дельфей. Вылечивается перекодировкой в ELF и обратно при помощи ObjConv'а. Ну и имена некоторых импортов надо им же пофиксить - убрать префиксы типа '__imp_' и '__ms'

велик и дремуч язык Си !
...
Рейтинг: 0 / 0
Компиляция obj файлов
    #39666201
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorвелик и дремуч язык Си !
Это становится не так смешно, когда на SO видишь кучу вопросов а-ля: "а как мне собрать мой HelloWorld, он требует какие-то заголовки и не находит какие-то dll-ки" :)
Ну и то что gcc пишет в coff заголовок функции без заголовка секции, а атрибуты секции прикручивает к первой функции - это тоже просто отлично ящитаю.
...
Рейтинг: 0 / 0
Компиляция obj файлов
    #39666350
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpто что gcc пишет в coff заголовок функции без заголовка секции, а атрибуты секции прикручивает к первой функции - это тоже просто отлично ящитаюесли бы все было как в сказке то не глючили бы линкеры и не пришлось бы писать ulink харону правда иногда достаточно доку покурить хотя про манглинг от гнуси увы не скажу
...
Рейтинг: 0 / 0
Компиляция obj файлов
    #39666450
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpВ общем в итоге я таки подебил [ага] MinGW64 и заставил его сгенерить мне правильные .obj файлы.

Как выяснилось, gcc неправильно собирает COFF obj'ы, в результате чего некоторые функции в них не видны из дельфей. Вылечивается перекодировкой в ELF и обратно при помощи ObjConv'а. Ну и имена некоторых импортов надо им же пофиксить - убрать префиксы типа '__imp_' и '__ms'.

После этого всё собирается, как минимум, без ошибок.
Тут вопрос не совсем к gcc, а скорее к тому - что же хочет видеть Дельфа. Потому что раньше у нее были свои, плохо совместимые с чужими компиляторами, хотелки к формату. А сейчас они еще и переделали все и свои компиляторы.
Потому надо четко проверять комбинации по платформам OS/разрядность.

Иначе это просто танцы с бубном, не гарантирующие результата.

ЗЫ. По хорошему - они между дельфи и своим билдеровским компилятором то должны обеспечить совместимость....
...
Рейтинг: 0 / 0
Компиляция obj файлов
    #39666574
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglТут вопрос не совсем к gcc, а скорее к тому - что же хочет видеть Дельфа. Потому что раньше у нее были свои, плохо совместимые с чужими компиляторами, хотелки к формату. А сейчас они еще и переделали все и свои компиляторы.
Потому надо четко проверять комбинации по платформам OS/разрядность.
Дельфя, начиная с XE2, хочет стандартный COFF. Но проблема тут в том что нормальный COFF выглядит как-то так:
PEDump
Код: plaintext
1.
2.
3.
4.
0026     E 00000000  0000 STATIC   .text$mn
     * Section: 0000  Len: 00070  Relocs: 0004  LineNums: 0000
0028     E 00000000  0020 EXTERNAL _zlibVersion
0029     E 00000010  0020 EXTERNAL _zlibCompileFlags
002A     E 00000020  0020 EXTERNAL _zError
а то что делает GCC выглядит так:
PEDump
Код: plaintext
1.
2.
3.
0002     1 00000000  0020 EXTERNAL _zlibVersion
     * tag: 0000  size: 0000  Line #'s: 00000000  next fn: 0000
0004     1 00000010  0020 EXTERNAL _zlibCompileFlags
0005     1 00000020  0020 EXTERNAL _zError
Это называется: "найдите одно маленькое, но принципиальное отличие".
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Компиляция obj файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]