Дано: проект приложения, написанный для Qt Creator (4.7.4, только Win32, gcc / MinGW).
Требуется: подключите известную библиотеку Google Breakpad для сбора подробных дампов о сбоях от клиентов.
Мои текущие выводы таковы:
- есть breakpad-Qt проект там, около двух лет.Он содержит поддерево исходных исходных кодов прерывания, которые должны быть собраны с помощью Qt Creator, поэтому я попытался создать рабочий пример, собрав его.
- Сам по себе прерыватель зависит от
DbgHelp.h
из Windows SDK из-за использования Microsoftформат мини-дамп. DbgHelp.h
можно найти в заголовках Windows SDK, но он также включает некоторые заголовки из Visual Studio, которые, как сообщается, не могут быть скомпилированы GCC / MinGW (несовместимые расширения языка компилятором MSVS, я полагаю). - google breakpad включает файлы решения MSVS (созданные gyp) и легко собирается с помощью MSVS (у меня получилось как в версиях 2008, так и в версии 2010 Express), в результате чего некоторые
.lib
s были связаны сtarget application. - , но скомпилированные выше файлы
.lib
не понятны MinGW ld
, поэтому не могут быть связаны с проектом Qt.Известна несовместимость форматов библиотек. Тем не менее, - файлы
.lib
из MSVS 2008 (а не 2010) понимаются инструментом reimp
из инструментов MinGW (последний доступен), который предназначен для перевода библиотек изФормат MSVS в формате MinGW.В моем случае символы экспортируются, по-видимому, правильно, и некоторые .obj
файлы тоже, но перекомпилированная библиотека (с dlltool
из MinGW) по-прежнему не имеет связи с MinGW ld
. - И вся эта возня с
.lib
linkable заблокирован из-за другой проблемы: в Qt Project требуются действительные заголовки для компиляции клиентского кода, и эти заголовки в точности совпадают с заголовками из breakpad, включая DbgHelp.h
, см. Выше!
В настоящее времяОткрытые альтернативы, которые я вижу:
- Полностью переключите приложение с Qt / MinGW (Creator) на Qt / MSVS, что может позволить прямое соединение с разделителем восходящего потока.Я думаю, что это является основой успеха небольших гугл-сценариев использования Qt + breakpad.
- Создайте некоторый гибридный подход, где приложение создается как обычно с Creator, а затем связывается с breakpad с помощью компоновщика MSVS.Но опять же, заголовки!
- Оторвите минимальное закрытие того, что требуется от заголовка Microsoft от заголовков Microsoft для компиляции с чистым Qt Creator.
Есть предложения, есть опыт?