Стратегии обработки ошибок в разделяемой библиотеке - C

Я пишу кроссплатформенную общую библиотеку ( .so в Linux и .dll в windows) с помощью C. В настоящее время при возникновении ошибки библиотечные функции возвращают правильный код ошибки и записывают информацию об ошибке в stderr . Библиотечные функции также отправляют некоторую информацию и сообщения отладки на stdout . Это хорошо работает для консольных клиентов.

Теперь в этой библиотеке будут клиентские программы, использующие графический интерфейс, запрограммированный с использованием C ++ и wxWidgets. Мне интересно, как лучше всего обрабатывать ошибки и уведомлять об этом? Может ли приложение пользовательского интерфейса получить доступ к данным, поступающим на stdout и stderr на всех платформах?

Альтернативный способ, о котором я думал, - это функция инициализации библиотеки, которая инициализирует структуру, которая будет иметь указатели на функции. Все функции библиотеки будут использовать экземпляр этой структуры и вызывать указатели функций. Таким образом, клиент может выбрать, где печатать сообщения.

Интересно, какой очевидный способ решить эту проблему? Любая помощь была бы замечательной.

10
задан Navaneeth K N 17 November 2010 в 05:49
поделиться