在Visual Studio 2012

问题描述:

Qt5.0.1静态链接我建立的Qt有以下配置:在Visual Studio 2012

-platform win32-msvc2012 -no-icu -no-angle -opengl desktop -static -qt-sql-mysql -qt-plugins-mysql -nomake demos -nomake examples 

,一切都很好。顺便说一句。我还在qmake.conf中将win32-msvc2012 mkspecs/MD更改为/ MT以进行静态链接(根据某些说明)。现在我尝试使用静态链接在Visual Studio 2012中构建最简单的应用程序。所以我创建简单的项目(这个基本的一个,从Qt的视觉外接),它是:

#include "test.h" 
#include <QtWidgets/QApplication> 

int main(int argc, char *argv[]) 
{ 
QApplication a(argc, argv); 
test w; 
w.show(); 
return a.exec(); 
} 

(测试只是一个普通的窗口),并设置我记得,因为我是做对Visual Studio的两件事2010: 1)项目属性 - > C/C++ - >代码生成 - >运行库我设定为MT 2)项目属性 - >常规 - > MFC的使用我在静态库中设置为使用MFC

在Qt项目设置中,我设置了我的静态版本的Qt。在这种配置中,我得到了很多错误 - http://pastebin.com/6ve3pFUh [pastebin.com]所有库(我认为所有)都是由Qt插件添加的(qtmain.lib Qt5Core.lib Qt5Gui.lib Qt5Widgets.lib)。如果我设置MFC使用默认值,它是使用标准的Windows库,然后我得到这个:

1>  Creating library D:\Visual Studio 11\Projects\test\Win32\Release\test.lib and object D:\Visual Studio 11\Projects\test\Win32\Release\test.exp 
1>Qt5Core.lib(qeventdispatcher_win.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "private: void __thiscall QEventDispatcherWin32::createInternalHwnd(void)" ([email protected]@@AAEXXZ) 
1>D:\Visual Studio 11\Projects\test\Win32\Release\\test.exe : fatal error LNK1120: 1 unresolved externals 

我完全不知道是怎么回事。在Visual Studio 2010和Qt 4.8中,这种方式一切正常。我读了一些关于更多外部依赖关系的内容,我应该添加,但我不确定。哦,顺便说一句 - 在QtCreator中,这种静态链接效果很好,但它不能看到MySQL插件,这对我来说也是一个谜,我需要它到我的原始项目。

+0

你有没有解决呢?我遇到了同样的问题。 – GraehamF 2013-12-16 16:52:56

+1

据我记得,我不得不与QtCreator一起构建我的项目。在Visual中,在建筑物中存在一些不允许静态建立Qt的碰撞。 – Blood 2013-12-16 20:09:50

我正在使用Visual Studio 2013,但我注意到昨天完全相同的缺失链接。

您需要添加一个依赖到Ws2_32.lib。

如果你的项目编译,但有一个神秘的“Windows平台插件失踪”的消息崩溃,您需要添加到一个CPP这样的:

Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin); 

这可能会增加新的依赖。

FYI这些都是我用默认的Qt项目的依赖(有的仅与ANGLE必要):

  • WINMM.LIB
  • WS2_32.LIB
  • DXGUID.LIB
  • D3D9的.lib
  • imm32.lib
  • qtmaind.lib
  • Qt5Cored.lib
  • Qt5Guid.lib
  • Qt5Widgetsd.lib
  • libEGLd.lib
  • libGL函数
  • ESv2d.lib
  • translator_commond.lib
  • preprocessord。LIB
  • translator_hlsld.lib
  • qwindowsd.lib
  • Qt5PlatformSupportd.lib
  • %(AdditionalDependencies)