Использование .OBJ файлов от masm32 в Delphi
От: Wyfinger  
Дата: 17.01.06 04:01
Оценка:
Добрый день. Вот попался хороший исходник, написанный на masm32 — это lib библиотека с исходниками, поэтому есть и .OBJ. Хотел использовать ее в своих Delphi программах.

Взял .OBJ и подключил директивой $L — при компиляции выдается ошибка:

[Error] uFMOD.pas(9): Bad object file format: '...\hipnose.obj'

Help говорит, что нужно использовать 32 (т.е. Coff) формат, но я уже как только не компилировал — все равно ничего не получается. Я даже пытался туда .LIB впихнуть.

В то же время у меня есть исходник на Delphi, который использует .OBJ файлы, сделанные в TMT Pascal'е. Исходников самих .OBJ файлов нету, но насколько я могу судить по внешнему виду — они 16 битные, но Delphi их благополучно принимает.

Подскажите как использовать .OBJ или .LIB файлы в Delphi.
<< wyfinger@bluebottle.com >>
Re: Использование .OBJ файлов от masm32 в Delphi
От: Sergei I. Gorelkin Россия  
Дата: 17.01.06 07:20
Оценка:
Здравствуйте, Wyfinger, Вы писали:

<skipped>

W>Подскажите как использовать .OBJ или .LIB файлы в Delphi.


Ему нужен 32-битный OMF формат. Могу ошибаться, но вроде бы какие-то версии masm32 позволяют получить его, если не указывать ключ /coff. Также можно попробовать утилиту coff2omf из состава C++ Builder или что-то аналогичное по назначению.
А .lib, по-моему, вообще никаким боком не лезет
Re[2]: Использование .OBJ файлов от masm32 в Delphi
От: Wyfinger  
Дата: 17.01.06 08:18
Оценка:
Здравствуйте, Sergei I. Gorelkin

SIG>Ему нужен 32-битный OMF формат. Могу ошибаться, но вроде бы какие-то версии masm32 позволяют получить его, если не указывать ключ /coff. Также можно попробовать утилиту coff2omf из состава C++ Builder или что-то аналогичное по назначению.

SIG>А .lib, по-моему, вообще никаким боком не лезет

На счет OFM я тоже уже узнал. Но Delphi мой masm32 все-равно не понимает, какие бы ключи я не устанавливал.

Пожалуйста вышлите мне (wyfinger@bluebottle.com) утилитку coff2omf — что-то найти не могу, а CBuilder'a сейчас нет. Очень Жду.
<< wyfinger@bluebottle.com >>
Re[3]: Использование .OBJ файлов от masm32 в Delphi
От: Skyle Россия  
Дата: 17.01.06 09:04
Оценка:
>Пожалуйста вышлите мне (wyfinger@bluebottle.com) утилитку coff2omf — что-то найти не могу, а CBuilder'a сейчас нет. Очень Жду.

Можно попробовать по ссылке отсюда
http://pascal.vov.ru/0000.html
Posted via RSDN NNTP Server 2.0
Re[3]: Использование .OBJ файлов от masm32 в Delphi
От: idiMAN  
Дата: 18.01.06 11:53
Оценка:
Здравствуйте, Wyfinger, Вы писали:

W>Пожалуйста вышлите мне (wyfinger@bluebottle.com) утилитку coff2omf — что-то найти не могу, а CBuilder'a сейчас нет. Очень Жду.


Этот файл есть в Delphi 2006.
Re[4]: Использование .OBJ файлов от masm32 в Delphi
От: Wyfinger  
Дата: 19.01.06 10:04
Оценка:
Здравствуйте, idiMAN, Вы писали:

MAN>Этот файл есть в Delphi 2006.


Жаль только, что Delphi 2006 у меня нет.
<< wyfinger@bluebottle.com >>
Re[5]: Использование .OBJ файлов от masm32 в Delphi
От: Arioch2  
Дата: 19.01.06 12:03
Оценка:
W>Жаль только, что Delphi 2006 у меня нет.

А в бесплатном Borland C++ 5.02 этого нет?
Re[6]: Использование .OBJ файлов от masm32 в Delphi
От: idiMAN  
Дата: 20.01.06 10:03
Оценка:
Положил сюда:

http://slil.ru/22517791
Файл будет удален через 1 месяц после последнего скачивания.
Re: Использование .OBJ файлов от masm32 в Delphi
От: Wyfinger  
Дата: 21.01.06 05:00
Оценка:
Итак, подведу итоги обсуждения:

1) Delphi понимает OMF объектные файлы, да и то с некоторыми ограничениями.

2) Существует утилита coff2omf (входит в поставку CBuilder'а), но она в моем конкретном случае не помогла.

Если кому интерестно, я хотел использовать в Delphi объектные файлы библиотеки FMOD, для проигрывания XM музыки. В итоге было найдено готовое решение для портирования библиотеки в Delphi — там просто использовалась другая версия библиотеки — без использования BSS сегмента.

Если кому интерестно — вот ссылка
<< wyfinger@bluebottle.com >>
Re[2]: Использование .OBJ файлов от masm32 в Delphi
От: Kvant  
Дата: 23.01.06 17:07
Оценка:
Разрешите внести некоторые уточнения:

W>1) Delphi понимает OMF объектные файлы, да и то с некоторыми ограничениями.

Ограничений, в основном, 3 штуки:
Вызовы функций через импорт в Delphi сводятся к формату "call [jmp адрес]". Если в объектнике указан просто "call адрес", компилятор Delphi выдаст ошибку.
Имена импортируемых функций не должны содержать декорации (типа _imp__имя@N), за исключением борландовского формата.
Фиксапы (записи FIXUPP) должны быть исключительно 5-байтными.

Есть ещё ограничения на имена секций, TLS и т.д. Тем не менее, в большинстве случаев достаточно иметь в виду лишь те 3 вышеописанных ограничения, чтобы получить работоспособный OMF-объектник без использования сторонних утилит.

Рекомендую взглянуть на документацию и исходники утилиты OMF2D by EliCZ.

W>2) Существует утилита coff2omf (входит в поставку CBuilder'а), но она в моем конкретном случае не помогла.

Борландовская утилита годится лишь для конвертирования импорта. Для конвертирования обычных объектников она непригодна. Зато есть coff2omf от товарища Walter Oney, которую можно бесплатно скачать вместе с пакетом утилит от Digital Mars или же с сайта wasm.ru. К сожалению, утилита не безглючна Лично я предпочитаю генерировать OMF с помощью бесплатного борландовского компилятора C++ или же masm32 (без ключа /coff, как кто-то верно подметил).

W>Если кому интерестно, я хотел использовать в Delphi объектные файлы библиотеки FMOD, для проигрывания XM музыки. В итоге было найдено готовое решение для портирования библиотеки в Delphi — там просто использовалась другая версия библиотеки — без использования BSS сегмента.

Использование BSS не влияет на успех конвертирования объектника в формат OMF для Delphi. К примеру, библиотека uFMOD уже портирована в этот формат, хотя и использует очень активно BSS. Если кому-то интересно получить этот билд uFMOD до официального релиза, обращайтесь на мыло вашего покорного слуги
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.