我应该选择哪个编译器选项?
我必须使用第三方静态库让我的 qt 应用程序在 Windows 上运行。第三方给我提供了.lib和.h文件供我使用。这些库是用 MSVC 编译器编译的。
我的 qt Creator 正在使用 MinGW 编译器来编译我的应用程序。我将 .h 和 .lib 文件复制到我的 qt 项目目录中,然后将它们添加到 .pro 文件中,如下所示
QT += 核心 GUI
目标 = MyTest 模板 = 应用程序
LIBS += C:\Qt\2010.05\qt\MyTest\newApi.lib
源+= main.cpp\ 主窗口.cpp
标头 += mainwindow.h \ newApi.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 编译器支持?
请建议...
I have to use the third party static library for my qt application to run on windows. The third party provides me a .lib and .h file for use. These libraries are compiled with MSVC compiler.
My qt Creator is using MinGW compiler to compile my application. I copied the .h and .lib file to my qt project directory and then added those in .pro file as follows
QT += core gui
TARGET = MyTest TEMPLATE = app
LIBS +=
C:\Qt\2010.05\qt\MyTest\newApi.libSOURCES += main.cpp\
mainwindow.cppHEADERS += mainwindow.h \
newApi.hFORMS += mainwindow.ui
Now I am getting some runtime error like this -
Starting
C:\Qt\2010.05\qt\MyTest-build-desktop\debug\MyTest.exe...
C:\Qt\2010.05\qt\MyTest-build-desktop\debug\MyTest.exe
exited with code -1073741515
Can any body suggest is this runtime error is due to mismatch of compiler? (because of my .lib file I added is comipled in MSVC compiler and my qt app is compiled using MinGW compiler)
If not what may be the reason? Am I missing anything in adding the .h and .lib file to my qt project?
If my MinGW compiler will not support the .lib file generated in MSVC compiler what may be the work-arround?
Can I create the .lib files in MinGW compiler? or this format is supported only by MSVC compiler only?
Please suggest...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果第三方库提供 C++ 接口,您必须使用相同的编译器来构建您的应用程序。如果您买不起 Visual Studio 的商业版本,您可以使用express 版本。您应该找出库中使用的编译器版本(2005、2008、2010),否则您可能会遇到兼容性问题。出于同样的原因,您可能必须构建静态应用程序 - 但首先要研究 Qt 许可条件 。
If the third party library provides a C++ interface, you have to use the same compiler to build your application. If you cannot afford a commercial version of visual studio you can use an express edition. You should find out which compiler version (2005, 2008, 2010) was used in the library, because otherwise you might run into compatibility problems. For the same reason you will likely have to build a static application - but study the Qt licensing conditions first.
如果此问题是由于编译器不匹配(MINGW 与 MSVC)造成的,那么我预计链接应用程序将会失败。但这显然奏效了。
这可能是应用程序启动时未找到某些依赖 DLL 的问题。
使用 dependency walker (http://www.dependencywalker.com/) 检查所有 DLL 是否在搜索路径中可用。
If this issue would be due to a mismatch of the compilers (MINGW vs MSVC) then I would expect that linking the application would fail. But that apparently worked.
It might be an issue with some dependent DLL not being found at application start.
Check with dependency walker (http://www.dependencywalker.com/) if all DLLs are available in the search path.