我在Qt Creator中有一个项目,我正在尝试编译静态版本。为此,我在.pro文件中的“CONFIG”选项中添加了“static”。
重建所有文件后,我得到一个名为“release”的文件夹,其中包含可执行文件和其他一些文件。尝试执行生成的文件时,出现错误,如下所示:
“程序入口点__cxa_throw_bad_array_new_length无法位于动态链接库C:\ Qt \ 5.5 \ mingw492_32 \ bin \ QtCore.dll”
无论我使用mingw 5.5.0还是5.4.2编译文件,都会出现此错误消息。
使用依赖性walker并处理“正确的”QT dll文件也无法解决问题。
我已经知道:将错误的QTCore.dll复制到项目文件夹的人会发生此错误。但是,由于我没有复制任何.dll文件,我不知道如何使用这些信息对我有利。
总之,我的问题是:如何阻止此错误发生?此外,是否有更好的静态编译qt应用程序的方法?
答案 0 :(得分:1)
要构建应用程序的静态版本,您基本上需要两件事:
1)添加
CONFIG += static
<。>在你的.pro文件中(你做过)并且不要复制任何Qt dll。
2)你需要构建静态Qt
https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW
默认情况下,Qt已安装为动态链接,这就是你需要自己构建静态Qt的原因。
你可能还想看看这个伟大的Q&amp; A:
Qt static linking and deployment
但它主要涉及Qt4。想法是一样的。
在构建静态Qt后,您需要重建应用程序。并且不要复制任何Qt dll。