【问题标题】:Which compiler option I should choose?我应该选择哪个编译器选项?
【发布时间】:2011-01-07 07:04:24
【问题描述】:

我的 qt 应用程序必须使用第三方静态库才能在 Windows 上运行。第三方为我提供了一个 .lib 和 .h 文件供我使用。这些库是用 MSVC 编译器编译的。

我的 qt Creator 正在使用 MinGW 编译器来编译我的应用程序。我将 .h 和 .lib 文件复制到我的 qt 项目目录中,然后将它们添加到 .pro 文件中,如下所示

QT += 核心 gui

目标 = MyTest 模板 = 应用程序

LIBS += C:\Qt\2010.05\qt\MyTest\newApi.lib

SOURCES += main.cpp\ 主窗口.cpp

标题 += 主窗口.h \ 新API.h

FORMS += mainwindow.ui

现在我遇到了一些像这样的运行时错误 -

开始 C:\Qt\2010.05\qt\MyTest-build-desktop\debug\MyTest.exe... C:\Qt\2010.05\qt\MyTest-build-desktop\debug\MyTest.exe 退出代码 -1073741515

任何机构都可以建议此运行时错误是由于编译器不匹配造成的吗? (因为我添加的 .lib 文件是在 MSVC 编译器中编译的,而我的 qt 应用程序是使用 MinGW 编译器编译的)

如果不是,可能是什么原因?在将 .h 和 .lib 文件添加到我的 qt 项目时,我是否遗漏了什么?

如果我的 MinGW 编译器不支持在 MSVC 编译器中生成的 .lib 文件,解决办法是什么?

我可以在 MinGW 编译器中创建 .lib 文件吗?还是只有 MSVC 编译器才支持这种格式?

请建议...

【问题讨论】:

标签: visual-c++ qt4 mingw static-libraries runtime-error


【解决方案1】:

如果第三方库提供 C++ 接口,您必须使用相同的编译器来构建您的应用程序。如果您买不起 Visual Studio 的商业版本,您可以使用 express edition。您应该找出库中使用了哪个编译器版本(2005、2008、2010),否则您可能会遇到兼容性问题。出于同样的原因,您可能必须构建一个静态应用程序 - 但首先要研究 Qt licensing conditions

【讨论】:

    【解决方案2】:

    如果此问题是由于编译器不匹配(MINGW 与 MSVC)造成的,那么我预计链接应用程序会失败。但这显然奏效了。

    这可能是在应用程序启动时未找到某些依赖 DLL 的问题。 如果所有 DLL 都在搜索路径中可用,请检查依赖遍历器 (http://www.dependencywalker.com/)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 2010-10-23
      • 1970-01-01
      • 2019-01-15
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多