Подтвердить что ты не робот

Может ли 64-битный Delphi статически ссылаться на скомпилированные объектные файлы C?

My 32-разрядное приложение Delphi 2010 ссылается на несколько объектных файлов C с помощью директивы $LINK для компилятора. Могу ли я сделать это в Delphi XE2 при настройке 64 бит?

В настоящее время я компилирую с использованием bcc32 версии 5.5, но я не возражаю против того, какой компилятор я использую, если окажется, что компилятор Embarcadero C еще не выводит 64-битные объекты.

4b9b3361

Ответ 1

Да. Вы должны скомпилировать файлы объектов "C" в формате COFF. Обычно это означает либо компиляторы Intel и/или MSVС++. Те же предостережения применимы к привязке 64-битного объектного файла, которые применяются к 32-битным. Вы должны убедиться, что все внешние ссылки правильно разрешены либо путем предоставления другого .obj, который имеет этот символ, либо из кода Delphi. При создании кода "C" убедитесь, что вы отключили проверку стека или другое генерирование кода проверки во время выполнения. Много раз такой codegen полагается на определенную версию RTL C/С++ из данного инструмента.

Что-то еще стоит отметить, что в то время как Delphi 64bit может ссылаться на объектные файлы COFF (в конечном итоге это также будет поддерживать ELF64), 32-разрядный Delphi поддерживает связь с С++ Builder, созданным объектными файлами OMF и новыми для XE2, 32-битных объектных файлов COFF который может быть построен с помощью MSVС++. Эти же оговорки применяются.

Ответ 2

Да, вы можете ссылаться на файлы OBJ в 64-разрядных проектах XE2, но OBJ файлы должны быть 64-битным кодом.