2013-06-03 3 views
4

есть ли какой-либо инструмент, например Borland "coff2omf.exe" для преобразования формата Borland OMF LIB в формат MS VC++ COFF LIB?Формат OMF для COFF формат

Фактически я хочу создать файл .obj в delphi и использовать его в MSVC++.

+0

Насколько сложным является ваш код Delphi? Использует ли он какую-либо часть Delphi RTL? –

ответ

4

Насколько мне известно, такого инструмента нет. Используя конвертер объектных файлов Agner Fog, инструмент, на который ссылается Арно, мне никогда не удалось преобразовать блок Delphi в COFF .obj, который можно связать с программой MSVC.

Я действительно считаю, что нереально взять исходный код Delphi, скомпилировать его, а затем использовать сгенерированный объект в MSVC. Другое направление вполне возможно. Вы можете скомпилировать C-код для объекта и связать этот объект с вашим исполняемым файлом Delphi. Когда вы это делаете, вам нужно разрешить любые зависимости, которые имеет скомпилированный объект.

Но для связывания объекта Delphi с программой на C/C++ потребуется какая-то часть используемого Delphi RTL. И это будет сложно, если вы не используете какую-либо часть Delphi RTL, что кажется маловероятным.

В вашей ситуации я думаю, что ваши варианты:

  1. Порт код до C или C++.
  2. Компилировать код Delphi в динамическую библиотеку и ссылаться на нее с вашей программы на C++.
+0

: Благодарю вас за ваш совет, но я думаю, что это возможно. один из моих старых друзей выполнил эту работу, он превратил delphi .obj в coff и использовал в vC++ dll для AV-движка. (извините меня за мой плохой английский) – Behrooz

+0

Я ничего не нашел. Я никогда не мог сделать инструмент, который Арно ссылается на работу с Borland OMF. –

7

Да, есть такой инструмент.

См. this tool.

Эта утилита может использоваться для преобразования объектных файлов между форматами COFF/PE, OMF, ELF и Mach-O для всех 32-разрядных и 64-разрядных платформ x86. Может изменять имена символов в объектных файлах. Может создавать, изменять и преобразовывать библиотеки функций на разных платформах. Может удалять файлы объектов и исполняемые файлы. Также включает очень хороший дизассемблер, поддерживающий наборы инструкций SSE4, AVX, AVX2, FMA и XOP. Исходный код включен (GPL). Руководство.

Отметьте, что этот http://www.agner.org веб-сайт - лучший ресурс, который я знаю о низкоуровневой оптимизации. Вся связанная информация стоит прочитать, если вы хотите иметь дело с производительностью.

Но для использования генерируемого Delphi .obj с VC++ это будет непросто, но для очень небольшой части кода. Вам понадобится Delphi RTL, используемый в вашем коде. Внешний .dll намного лучше. Также обратите внимание, что некоторые типы (например, строки или динамические массивы) не будут легко модифицироваться в VC++.

+0

Есть ли у вас опыт работы с этим инструментом? Мне никогда не везло с этим. –

+1

Я играл с ним много времени. Работает отлично. Но большую часть времени вам, конечно же, нужно знать материал низкого уровня. –

+0

Я думаю, что к тому времени, когда вы сократите Pascal до того, что не использует Delphi RTL, достаточно легко перенести его на C! –

Смежные вопросы