убивало бы Delphi приложение? Просто вылетает без каких-либо сообщений (даже под дебагером).
Причём, в тестовом приложении эта же dll ведёт себя как и задумано. Даже не знаю куда рыть... какие-то флаги cpu или что вообще может влиять на обработку исключений?
dll собрана при помощи gcc, функция помечена как extern "C" и __cdecl, обработка исключения сделана как:
try { throw std::runtime_error("wtf"); } catch (...) { return 1; }
Стикер
смотря какое исключение. если зафейлить стэк или менеджер памяти, что бывает. то программа может просто тихо умереть и всё. как-то недавно у меня такое и было
на сколько я понимаю, если в С++ исключение не обработано, то там вызывается код убивания процесса, поэтому и вылетает наверное
дык оно обработано или нет?
Стикер
в том-то и дело, что тестовое приложение оно не убивает, а убивает рабочее, которое вылетает вообще без сообщений
ну не знаю. У меня исключения ловятся в dll и все OK
Тыж юзаешь extern C. Насколько я помню, при extern C нужно забыть про try catch throw в библиотеках и переходить на коды ошибок так сказать, C-compatible way так сказать.
всё верно, наружу только код ошибки уходит
нормально все работает. Если исключение ловится внутри функции, то снаружи никто и не узнает ничего ... если конечно нет багов, включая баги в рантайме C++
Обсуждают сегодня