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