Перейти к содержанию
Fire Monkey от А до Я
  • 0

Вызов функции из DLL. Зависает при Release режиме компиляции


bigjorj

Вопрос

Win32 приложение на Firemonkey

Есть DLL написанная на C++. В ней есть экспортная функция.

int getStatusFlags (int *fatalStatus, int *currentFlagsStatus, int *documentStatus);

импортирую функцию следующим способом 

  function getStatusFlags (var fatalStatus, currentFlagsStatus, documentStatus:Integer):integer; stdcall; external DllName;

В режиме компиляции Debug все идеально, но если откомпилировать в Release то приложение наглухо виснет при вызове функции.

Подозреваю что я неправильно импортирую функцию и происходит неправильная работа с памятью. Пробовал менять тип передаваемых переменных на PInteger с передачей указателей, но все равно падает.

Кто сталкивался. Помогите!

 

 

 

 

Изменено пользователем bigjorj
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Если бы все было так просто... Другие функции из DLL выполняются успешно. Вообще не понимаю что делать. Распространять приложение откомпилированное в Debug что-ли?

Изменено пользователем bigjorj
Ссылка на комментарий
  • 0

Поиграйтесь с опциями компилятора, возможно в релизе оптимизация или еще что влияет. Я как то бился над подобной проблемой несколько дней, выяснилось что включение оптимизации выполняло один из циклов for задом наперед ;-)

Ссылка на комментарий
  • 0

Доброго дня. Было нечто подобное, подробностей уже и не помню, но - как собирается Dll в релизе и в дебаге? Имеется ввиду статическая или динамическая линковка. Если они разные, то при работе с динамическим рантаймом все нормально, а вот когда собираете статически - вылазит ошибка - может чего переоптимизирует, или версии рантайма отличаются.

Или попробуйте, чем черт не шутит, сменить соглашения о вызове, на cdecl к примеру

Изменено пользователем Gingercat
Ссылка на комментарий
  • 0
В 24.06.2016 в 00:31, Gingercat сказал:

Или попробуйте, чем черт не шутит, сменить соглашения о вызове, на cdecl к примеру

Огромное СПАСИБО! Именно cdecl и помогло!

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...