Qt构建到没有dll的单个exe文件

时间:2013-03-01 08:57:32

标签: c++ windows qt dll runtime-error

我在Widows 7上使用Qt库编写了一个简单的对话框。现在我需要将.exe文件发送给我的朋友,以便他可以使用它。但我需要发送大约10个.dll文件,以便他可以使用它。我找到了所有这些并发送了,但他无法打开它。有一些“Visual C ++运行时错误”。坦率地说,在我的另一台计算机上,我无法用相同的错误打开它。我搜索了很多,并找到了不同的答案,如:

  1. 更新DirectX
  2. 安装Microsoft Visual C ++ 2010可再发行组件包(vcredist_x86.exe)
  3. 但这一切对我没有帮助。所以我的问题是:

    1. 为什么它在我开发该对话框的计算机上运行,​​即问题是什么?
    2. 我怎样才能摆脱所有.dll个东西轻易将其编译成一个.exe文件?

2 个答案:

答案 0 :(得分:5)

1.为什么它在我开发该对话框的计算机上工作,即问题是什么?

因为您的计算机上安装了VC Runtime。

有两种方法可以解决这个问题,

a。您需要使用MultiThread(MT)而不是MultiThreadDLL(MTD)编译QT和您的exe。

b。在你朋友的电脑上安装vc运行时。

2.如何摆脱所有那些.dll的东西,把它简单地编译成一个.exe文件?

你必须在libs(whit MT)中构建所有QT dll,并将你的exe与这些lib链接。

这很费时间。你仍然需要Windows dll。无论如何,如果您仍想静态链接Qt,这些链接可能非常有用:

  1. http://qt-project.org/wiki/How_to_build_a_static_Qt_version_for_Windows_with_gcc
  2. http://qt-project.org/doc/qt-4.8/deployment-windows.html

答案 1 :(得分:1)

此链接可帮助我找到解决方案。 https://bugreports.qt-project.org/browse/QTBUG-28766

我复制了“C:\ Qt \ Qt5.0.1 \ 5.0.1 \ mingw47_32 \ bin”目录下的所有dll但是在添加“platforms / qminimal.dll”和“platforms / qwindows.dll”之后全部解决了到我的.exe程序。