Я пишу приложение для компьютерного зрения (C ++ и OpenCV). Я создаю графический интерфейс для него с помощью wxWidgets - это очень просто; событие нажатия кнопки вызывает приложение трекера для запуска.
Мой вызов для закрытия приложения (т. Е. При нажатии кнопки закрытия) выглядит следующим образом:
// Exiting the App
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
// true is to force the frame to close
Close(true);
}
Это обычно работает с более простыми приложениями с графическим интерфейсом. Однако в этом случае фрейм исчезает, и в диспетчере задач процесс, похоже, продолжает работать и удерживает память. Это очень раздражает, потому что, если я запускаю или отлаживаю приложение, а затем внесу некоторые изменения и попытаюсь снова запустить его, не прерывая процесс вручную, компилятор выдаст ошибку ссылки, потому что .exe -
не найден или не создан последней добавочной ссылкой.
Попытка вставки грубой силы выхода (1); в методе onQuit, но это приводит к сбою приложения.
Я не уверен, что это такое .. при работе без графического интерфейса приложение работает и нормально завершает работу (хотя оно вызывается немного по-другому - из функции main (), а не из обработчика событий нажатия кнопки, который вызывает абстрактный базовый класс).
Возможно ли это потому, что класс объявляется с глобальной областью действия? Как, в одном файле у меня есть экземпляр класса, объявленный вне какого-либо метода класса? Возможно, wxWidgets не может справиться с этим?
Для уточнения:
Рамка, которую я закрываю, является рамкой верхнего уровня. У меня не было проблем с точно таким же кодом GUI, когда он не вызывает методы компьютерного зрения.
Я специально не кодировал многопоточность, но для начала я получил сообщение об ошибке «Ошибка: невозможно инициализировать OLE». Чтобы это исправить, я должен был установить для wxUSE_DRAG_AND_DROP, wxUSE_CLIPBOARD, wxUSE_OLE и wxUSE_OLE_AUTOMATION значение 0 (вместо 1), а затем (пере) скомпилировать wxWidgets.
Просто интересно, есть ли какая-то многопоточность с HighGUI, несовместимая с WxWidgets? Кто-нибудь еще сталкивался с подобными проблемами?