@link_irk

Как вызвать C++ метод класса, callback из библиотеки на C?

Здравствуйте. С праздником, коллеги.
Имеется библиотека на C, которая в отдельном потоке читает данные с COM порта и формирует из них пакеты данных.
Есть C++ приложение на wxWidgets, которое должно получать от библиотеки данные по мере их накопления.
В классе, описывающем фрейм wxWidget сделал статическое свойство, которое хранит указатель на объект этого класса (чтоб в стат. методе можно было работать в контексте объекта) и статический метод, который и передаётся в библиотеку, в качестве указателя на callback функцию. Всё бы ничего, но почему-то при обращении к элементам фрейма из callback функции, приложение крашится с сигналом SIGABRT. Как можно решить данную проблему? Спасибо.
  • Вопрос задан
  • 2673 просмотра
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Насколько я помню, wxWidgets не умеет обрабатывать вызовы функций из других потоков.
Скорее всего это не проблема взаимодействия C и C++. Для уверенности запустите приложение в gdb и покажите стектрейс в момент получения сигнала.
Ответ написан
Комментировать
AxisPod
@AxisPod
docs.wxwidgets.org/trunk/overview_thread.html почитайте внизу. Там же и описано каким образом следует делать именно то, что вам требуется.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@link_irk Автор вопроса
Спасибо. Проблема решена событиями.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы