2015-02-20 5 views
0

Я ищу список поддерживаемых форматов файлов объектов для каждой версии delphi. Файлы объектов должны быть связаны с чем-то вроде: {$L lib/object.o}.Какая версия Delphi поддерживает формат объектного файла?

Причина этого - ошибка компоновщика в Delphi7 для проекта, который я поддерживаю. Ошибка не возникает в компиляторах> XE3. Я тестирую только XE3 и выше.

Кто-нибудь поддерживает список или знает ссылку на тот, где я могу найти информацию о поддерживаемом формате и/или изменениях с более новыми версиями, возможно, также проблемы с объектными файлами и т. Д.?

Я хотел бы помочь пользователю проекта с этой проблемой (lz4-delphi issue).

ответ

1

Изменение произошло с XE2, который добавил поддержку формата объекта COFF. Предыдущие версии поддерживали только объекты OMF.

Изменение добавления поддержки COFF было вызвано новым 64-битным компилятором, представленным в XE2. В то время у Embarcadero не было 64-битного C++-компилятора и поэтому необходимо было связать объекты, созданные другим компилятором. Они решили использовать компилятор MS, который испускает объекты COFF.

Allen Bauer's answer вопрос, который я попросил, содержит более подробную информацию.

На практике это означает, что для Delphi 7 вам необходимо скомпилировать исходный код с помощью bcc32. Или скомпилируйте C-код с каким-то другим компилятором, но затем подключитесь к DLL.

+0

Thx, я надеюсь, что эта информация поможет пользователям D7 моего проекта. Я связал его с этим. – Hugie

+0

Есть ли у вас опыт работы с объектно-ориентированными преобразователями вроде: http://agner.org/optimize/#objconv? Должен ли я предложить это? – Hugie

+0

Нет. Предложите перекомпиляцию с помощью bcc32. То есть, если вы хотите предложить путь вперед, который имеет любую перспективу успеха. Также довольно чудно, что кому-то удалось связать объект связи. Я никогда не преуспевал, но, возможно, это было связано с тем, что я связывался с 64 бит. Моя собственная база кода использует bcc32 для 32 бит и msvc для 64 бит. –