Компиляция стороннего файла obj в 64-битное приложение Delphi - проблема с фреймами исключений - PullRequest
7 голосов
/ 23 апреля 2019

Я пытаюсь использовать сторонний объектный файл в моем 64-битном приложении Delphi, однако он просто падает.

Включая их mod64.obj, компилирует и связывает OK, и можно вызывать функции в obj, но тогда код вылетает.mod64.obj был собран с MASM (v9)

Я поднял этот вопрос у стороннего разработчика приложений, они скачали для тестирования общедоступную версию Delphi, и вот их ответ:

Проблема, похоже, заключается в том, что 64-разрядный компоновщик в Delphi не учитывает фреймы исключений, которые экспортирует объектный модуль, и навязывает свой собственный обработчик исключений.Это неправильно обрабатывает внутренне сгенерированные исключения в нашем модуле и приводит к сбою функции.Я пробовал это здание для отладки и отсутствия отладки и экспериментировал с такими опциями компилятора и компоновщика, которые, казалось, могли иметь эффект, но безрезультатно, и теперь я застрял.Я вижу, что ни один из наших фреймов не попадает в раздел .pdata скомпилированного 64-битного исполняемого файла Delphi.

Итак, мой вопрос: есть ли какие-то настройки компилятора, которые необходимы для этой работы?

...