【问题标题】:Qt Release DLL ErrorQt 发布 DLL 错误
【发布时间】:2015-11-12 04:45:08
【问题描述】:

我在 Qt Creator 中有一个项目,正在尝试编译一个静态版本。为此,我在 .pro 文件中的“CONFIG”选项中添加了“static”。

重建所有文件后,我得到一个名为“release”的文件夹,其中包含一个可执行文件和一些其他文件。尝试执行生成的文件时,我收到如下错误:

“无法在动态链接库C:\Qt\5.5\mingw492_32\bin\QtCore.dll中定位程序入口点__cxa_throw_bad_array_new_length”

无论我使用 mingw 5.5.0 还是 5.4.2 编译文件,此错误消息仍然存在。

使用依赖遍历器并处理“正确”的 QT dll 文件也不能解决问题。

我已经知道:这个错误发生在将错误的 QTCore.dll 复制到他们的项目文件夹的人身上。但是,由于我没有复制任何 .dll 文件,因此我不知道如何利用这些信息来发挥自己的优势。

总之,我的问题是:如何阻止此错误的发生?另外,有没有更好的静态编译qt应用的方法?

【问题讨论】:

    标签: c++ qt dll


    【解决方案1】:

    要构建应用程序的静态版本,您基本上需要两件事:

    1) 添加

    CONFIG += static
    

    在你的 .pro 文件中(你做了)并且不要复制任何 Qt dll。

    2) 你需要构建静态Qt

    https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW

    默认情况下,Qt 已为动态链接做好准备,这就是您需要自己构建静态 Qt 的原因。

    您可能还想看看这个精彩的问答:

    Qt static linking and deployment

    但它主要处理 Qt4。想法是一样的。

    在您构建静态 Qt 之后,您需要重新构建您的应用程序。并且不要复制任何 Qt dll。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多