2013-02-14 264 views
2

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

回答

1

我正在使用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)