如何使用Qt Creator(gcc / MinGW)在Windows上构建Google breakpad?

时间:2011-11-28 19:54:46

标签: visual-studio qt mingw qt-creator google-breakpad

鉴于:为Qt Creator编写的应用程序项目(4.7.4,仅限Win32,gcc / MinGW)。

需要:插入众所周知的Google breakpad库,从客户那里收集详细的故障转储。

我目前的调查结果如下:

  • 那里有breakpad-qt项目,大约两岁。它包含了用Qt Creator构建的上游破解源的子树,所以我试图通过构建它来生成工作示例。
  • 由于使用了Microsoft minidump格式,
  • breakpad本身依赖于Windows SDK中的DbgHelp.h
  • DbgHelp.h可以在Windows SDK标头中找到,但是 进一步包括来自Visual Studio的一些标题,据报道它们无法由GCC / MinGW编译(我猜想MSVS编译器不兼容的语言扩展)。
  • google breakpad包含MSVS解决方案文件(由gyp生成),并且很容易由MSVS构建(我已经成功使用了2008和2010 Express版本),产生了一些与目标应用程序链接的.lib
  • 但MinGW .lib无法理解上面编译的ld文件,因此无法与Qt项目链接。据了解,库格式不兼容。
  • 虽然来自MSVS 2008(而不是2010)的.lib文件可以通过MinGW工具(最新版本)的reimp工具来理解,该工具旨在将库从MSVS格式转换为MinGW可用格式。在我的情况下,符号似乎正确导出,以及一些.obj文件,但重新编译的库(MinGW的dlltool)仍然是MinGW ld无法链接。
  • 所有关于.lib链接的大惊小怪都被另一个问题阻止了:Qt Project中需要有效的头来编译客户端代码,这些头文件正是来自breakpad的头文件,包括DbgHelp.h,见上文!

我看到目前开放的替代方案:

  • 完全将应用程序从Qt / MinGW(Creator)切换到Qt / MSVS,这可能允许直接链接上游breakpad。我认为这是Qt +破解板的微小可擦除用例成功的核心。
  • 构建一些混合方法,其中应用程序像往常一样使用Creator构建,然后通过MSVS链接器与breakpad链接。但同样,标题!
  • 为了使用纯Qt Creator进行编译,请从Microsoft标头中删除最小的breakpad需要关闭。

有任何建议,现有经验吗?

1 个答案:

答案 0 :(得分:0)

很抱歉让您失望,但QtBreakpad集成还没有为MinGW开发和测试。