2011-01-10 163 views
1

這裏有一個問題,應用程序仍然需要MSVCR100.dll和MSVCR100.dll。Visual Studio 2010和QT 4.7.1靜態鏈接

構建QT來源:

  • 集QMAKESPEC = Win32的msvc2010
  • 配置-platform Win32的msvc2010 -static
  • NMAKE

安裝後我很setuping我的項目並將選項設置爲/ MT/ZI。仍然 - 我的項目需要MSVCR100.dll和MSVCR100.dll。

+0

有甚至不應該建立一個靜態庫時,鏈接步驟。相反,庫管理工具`lib.exe`收集所有`.obj`文件到`.lib`。 究竟有什麼期待呢? – 2011-01-10 06:04:36

回答

0

你應該使用這些庫的DLL版本,包括可再發行的支持,安裝 - 這是有幾個原因(主要是與安全更新辦)微軟首選方式

我的猜測是,即使-static Qt使用使用DLL(可能的webkit或使用MS特徵的多媒體類)

+0

Dependency Walker會告訴你爲什麼。 – MSalters 2011-01-10 16:23:51

2

它應該是這樣一些運行時組件。

從Qt文檔:

Qt是使用-MD(d)開關,哪個環節對動態C/C++運行時庫這是必要的,因爲我們使用的任何時候都經歷過內存問題建。但-MD(d)標誌,而在一般情況下,推薦使用。你不應該改變自己這個標誌的申請,因爲它與Qt庫是如何,如果你改旗爲-MT建相沖突。不應該改變它爲Qt,因爲它很可能會導致問題

更多信息可在這裏找到:

http://qt-project.org/faq/answer/why_does_a_statically_built_qt_use_the_dynamic_visual_studio_runtime_librar