Приведет ли компиляция DLL в Delphi 7 к 64-битной ОС к 64-битной DLL?

Как следует из названия!

Я пытаюсь получить 64-битную dll


person Jon    schedule 10.06.2011    source источник
comment
Технически не должно быть причин, по которым вы можете скомпилировать 64-битную dll на 32-битном компьютере. Почему бы вам просто не провести небольшое исследование о том, как скомпилировать dll Delphi, чтобы это была 64-битная dll.   -  person Security Hound    schedule 10.06.2011
comment
Компилятор — это, по сути, компьютерная программа, которая принимает текстовый файл в качестве входных данных и создает файл EXE. Программа следует пошаговому алгоритму создания EXE из текстового файла. Но компилятор — это одна и та же программа независимо от того, на какой ОС он работает.   -  person Andreas Rejbrand    schedule 10.06.2011
comment
Вам потребуется версия Delphi/компилятора, которая знает, как компилировать в 64-битную версию - Delphi 7, конечно же, не умеет.... просто запустите компилятор на 64-битной бит ОС не помогает вообще   -  person marc_s    schedule 10.06.2011
comment
Выпечка торта в голубом доме даст голубой торт?   -  person dthorpe    schedule 10.06.2011
comment
@dthorpe: В зависимости от интенсивности цвета торт может выглядеть голубоватым. :)   -  person Andriy M    schedule 10.06.2011
comment
Сделает ли хранение старых ржавых труб в морозильнике их съедобными? @dthorpe, краска со стен может подойти :)   -  person Premature Optimization    schedule 10.06.2011
comment
@Ramhound Если бы только ваши чувства были обоснованными!   -  person David Heffernan    schedule 10.06.2011
comment
Может, ты захочешь отправиться сюда. embarcadero.com/products/delphi/64-bit   -  person Warren P    schedule 12.06.2011


Ответы (4)


Неа. Delphi 7 был выпущен в 2002 году; первый процессор AMD64 был выпущен в 2003 году. Delphi 7 никак не умеет генерировать 64-битный код.

person Ernest Friedman-Hill    schedule 10.06.2011

Все выпущенные версии Delphi, следующие за 16-битной Delphi 1, выдают 32-битные цели. На данный момент ваши варианты:

  1. Подождите до предстоящего 64-битного выпуска Delphi. Мы ожидаем, что это произойдет в этом году, но ваш порт не будет -тривиально.
  2. Перенос на FreePascal. Опять нетривиальный порт.
  3. Перенос на совершенно другой язык: еще больше работы, чем перенос на Free Pascal.
  4. Продолжайте работать с 32-битным кодом.
person David Heffernan    schedule 10.06.2011
comment
Я думал, что компилятор Delphi 1 создает 16-битные двоичные файлы. Или он смог скомпилировать оба? - person Andriy M; 10.06.2011
comment
Если вы создадите исполняемый файл Delphi 1, сделаете это четыре раза и соедините результаты вместе, результат может быть 64-битным, верно? :-) - person Warren P; 12.06.2011
comment
@Warren: Если бы это было так просто! Вы забываете, что помимо объединения кода вы также должны убедиться, что четыре части будут работать параллельно. Так что без дополнительных ухищрений полученный бинарник, скорее всего, не запустится на процессорах с числом ядер меньше 4. :) - person Andriy M; 15.06.2011

Компиляция программы означает перевод ваших исходных файлов в коды операций ЦП (и более того, она должна генерировать исполняемый образ, который может работать в ОС, для которой он был разработан, с соблюдением OS ABI — двоичного интерфейса приложения). Каждый тип ЦП имеет свой собственный набор кодов операций, и даже если архитектура Intel x86 имеет много общего между 16-, 32- и 64-битными кодами операций, различий достаточно, и ABI все равно отличается.

Создание 64-битного exe/dll означает создание 64-битных кодов операций с использованием также нового 64-битного ABI, и для этого должен быть написан компилятор, чтобы «знать» их, то, что может делать компилятор, определяется тем, как написан сам компилятор. , а не системой, в которой он запущен. Компилятор Delphi 7 "не знает" о 64-битных процессорах и exe/dll ABI, и поэтому не может его сгенерировать. Это справедливо и для Delphi XE. Следующая версия должна быть первой с 64-битным компилятором, вы можете подождать, или, если вы спешите, есть некоторые частично совместимые компиляторы, такие как FPC.

person Community    schedule 11.06.2011

person    schedule
comment
@andreas не оригинал ;-) stackoverflow.com/questions/5031604/ - person David Heffernan; 10.06.2011
comment
@David Я видел твой, но, честно говоря, он кажется подходящим для этого вопроса: коротко и по существу, нет необходимости упоминать FreePascal или следующую версию Delphi, которая (скорее всего) будет включать 64-битный компилятор. - person Cosmin Prund; 10.06.2011
comment
@Andreas Rejbrand: извините, но это не лучший ответ, лучший ответ: stackoverflow.com/questions/1732348/ - person The_Fox; 11.06.2011
comment
К сожалению, мой ответ, упомянутый выше, был только что удален. Бу ху! - person David Heffernan; 13.06.2011