我应该选择哪种编译器选项?

时间:2011-01-07 07:04:24

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

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

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

  

QT + =核心gui

     

TARGET = MyTest TEMPLATE = app

     

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

     

SOURCES + = main.cpp \           mainwindow.cpp

     

HEADERS + = mainwindow.h \       newApi.h

     

FORMS + = mainwindow.ui

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

  

启动   C:\ Qt的\ 2010.05 \ QT \ MyTest的建造桌面\调试\ MyTest.exe ...   C:\ Qt的\ 2010.05 \ QT \ MyTest的建造桌面\调试\ MyTest.exe   退出代码-1073741515

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

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

如果我的MinGW编译器不支持在MSVC编译器中生成的.lib文件,那么可能是work-arround?

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

请建议......

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果这个问题是由于编译器不匹配(MINGW与MSVC),那么我希望链接应用程序会失败。但这显然有效。

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