64-битное связывание объектного файла - PullRequest
5 голосов
/ 24 июня 2011

Я разрабатываю файлы JNI DLL в Delphi 7. Полученные файлы будут 32-битными DLL, которые не будут работать на 64-битной Java VM.

Delphi 7 имеет возможность генерировать c или c ++ объектные файлы.Можно ли создать 64-битную DLL из этих объектных файлов с помощью стороннего компоновщика?

Ответы [ 2 ]

9 голосов
/ 24 июня 2011

Компилятор Delphi испускает 32-битный объектный код.Неважно, как вы нарезаете его, этот код не может быть связан с 64-битным модулем.

На данный момент лучше всего использовать FreePascal , который может создавать 64-битные DLL.Готовится 64-разрядная версия Delphi, но дата ее выпуска неизвестна.

Другой вариант - принудительное использование 32-разрядной версии JVM, если это возможно для вас.

3 голосов
/ 24 июня 2011

Нет.64-битный код сильно отличается от 32-битного кода, за исключением простого использования 64-битных инструкций.MS ввела гораздо более строгие правила передачи параметров, данных стека и выравнивания и так далее.На самом деле нет способа включить 32-битный код в 64-битную DLL (и из-за этого запрещено также вызывать 32-битный код из 64-битной и наоборот, но с использованием определенных методов).Вы должны подождать 64-битный компилятор Delphi (и надеяться, что его первый выпуск достаточно хорош), или искать в другом месте.Delphi 7 все равно устаревает.

...