Я пишу кросс-платформенную разделяемую библиотеку (.so
в Linux и .dll
в Windows), используя C. В настоящее время при возникновении ошибки библиотечные функции возвращают правильный код ошибки и записывают информацию об ошибке в stderr
, Библиотечные функции также выдают некоторую информацию и сообщения отладки на stdout
. Это хорошо работает для консольных клиентов.
Теперь в этой библиотеке будут клиентские программы, использующие графический интерфейс, запрограммированный с использованием C ++ и wxWidgets. Мне интересно, каковы будут лучшие методы обработки ошибок и уведомления об этом? Может ли приложение пользовательского интерфейса получать доступ к данным, поступающим в stdout
и stderr
на всех платформах?
Альтернативный способ, которым я думал, - это функция инициализации библиотеки, которая инициализирует структуру, которая будет иметь указатели на функции. Все функции в библиотеке возьмут экземпляр этой структуры и вызовут указатели на функции. Таким образом, клиент может выбрать, где печатать сообщения.
Мне интересно, каков был бы очевидный способ решить эту проблему? Любая помощь будет великолепна.