Я пытаюсь использовать сторонний объектный файл в моем 64-битном приложении Delphi, однако он просто падает.
Включая их mod64.obj
, компилирует и связывает OK, и можно вызывать функции в obj, но тогда код вылетает.mod64.obj
был собран с MASM (v9)
Я поднял этот вопрос у стороннего разработчика приложений, они скачали для тестирования общедоступную версию Delphi, и вот их ответ:
Проблема, похоже, заключается в том, что 64-разрядный компоновщик в Delphi не учитывает фреймы исключений, которые экспортирует объектный модуль, и навязывает свой собственный обработчик исключений.Это неправильно обрабатывает внутренне сгенерированные исключения в нашем модуле и приводит к сбою функции.Я пробовал это здание для отладки и отсутствия отладки и экспериментировал с такими опциями компилятора и компоновщика, которые, казалось, могли иметь эффект, но безрезультатно, и теперь я застрял.Я вижу, что ни один из наших фреймов не попадает в раздел .pdata скомпилированного 64-битного исполняемого файла Delphi.
Итак, мой вопрос: есть ли какие-то настройки компилятора, которые необходимы для этой работы?