2011-01-10 104 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