我必须使用第三方静态库为我的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编译器支持这种格式?
请建议......
答案 0 :(得分:1)
如果第三方库提供了C ++接口,则必须使用相同的编译器来构建应用程序。如果您买不起商业版的visual studio,可以使用express edition。您应该找出库中使用了哪个编译器版本(2005,2008,2010),否则可能会遇到兼容性问题。出于同样的原因,您可能需要构建一个静态应用程序 - 但首先要研究Qt licensing conditions。
答案 1 :(得分:1)
如果这个问题是由于编译器不匹配(MINGW与MSVC),那么我希望链接应用程序会失败。但这显然有效。
可能是在应用程序启动时找不到某些依赖DLL的问题。 如果所有DLL在搜索路径中都可用,请使用依赖性walker(http://www.dependencywalker.com/)进行检查。