gpt4 book ai didi

visual-studio-2010 - 如何使用 Visual C++ 2010 Express 从 32 位环境为 64 位 Windows 编译 Qt?

转载 作者:行者123 更新时间:2023-12-04 05:55:48 26 4
gpt4 key购买 nike

我正在尝试为 64 位 Windows 编译 Qt 库(我不需要演示或示例)。有说明here但我遇到了它下面的评论中描述的错误。似乎没有任何地方可以引用如何进行此过程。

我的目标是 Microsoft Visual C++ 2010 Express。看起来我还需要 Perl 和 Windows SDK - 我该如何进行这个过程?

最佳答案

这个过程相当乏味和耗时——但我将在这里详细解释每个步骤,以供将来尝试编译 Qt 的其他人使用。

  • 第一步是安装所有先决条件。
  • ActivePerl ,在配置过程中使用。安装 Perl 后需要重新启动,因为它会修改环境变量。
  • Windows SDK 7.1 (以前称为平台 SDK)。选择要安装的组件时,请确保包含 x64 库。
  • Qt Downloads page 下载 Qt 源存档.
  • 将存档的内容提取到易于内存的位置(如 C:\ )。您稍后需要记住这个位置,因为我们将使用它来设置一些环境变量。
  • 现在打开 Windows SDK 7.1 命令提示符。首先将环境设置为 32 位 Release模式(我们需要将一些工具构建为 32 位应用程序):
    setenv /release /x86
  • 设置以下环境变量(下面的示例假设您提取到 C:\ ):
    set QTDIR=C:\qt-everywhere-opensource-src-4.8.0
    set PATH=%PATH%;%QTDIR%\bin
  • 现在运行 cd %QTDIR%并指定配置选项 - 示例如下:
    configure -release -opensource -qt-zlib -qt-libpng -qt-libmng -qt-libtiff
    -qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -platform
    win32-msvc2010
  • 配置过程完成后,cdsrc目录并运行:
    qmake
    nmake

    这个过程可能需要相当长的时间,所以现在是休息一下并回答 Stack Overflow 上的一些问题的好时机:)
  • 工具现已构建完成,您需要将 Qt 编译为 64 位库。输入以下命令:
    setenv /x64

    您将需要再次设置步骤 5 中的环境变量。现在输入这些命令。
  • 运行 cd %QTDIR%然后重新运行 configure命令 确保指定一个附加选项 :
    configure -release -opensource -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -platform win32-msvc2010 -no-qmake

    The -no-qmake option is very important - it indicates that we want to skip the compilation of the qmake.exe program because we want to keep the 32-bit version.

  • Now things get really complicated here because of some dependency problems. The tools (like moc) that Qt needs to build the core library and some of the other components are listed as dependencies in the src.pro file. This means that the compiler will attempt to build them as 64-bit applications and then try to run them - which will of course fail on a 32-bit system. So what we need to do is edit src.pro and remove those dependencies ourselves. Scroll down near line 85 and look for a line that begins with:

    !wince*:!ordered:!symbian-abld:!symbian-sbsv2 {

    该部分中的每一行都列出了一个子目标及其依赖项。您现在要做的是删除所有以 src_tools_ 开头的依赖项。 .例如:
    src_gui.depends = src_corelib src_tools_uic

    变成:
    src_gui.depends = src_corelib

    可能有更好的方法来做到这一点,但我还没有想出来:)
  • 现在我们cdsrc再次目录并运行以下命令
    nmake sub-winmain sub-corelib sub-xml sub-network sub-sql sub-testlib
    sub-gui sub-qt3support sub-activeqt sub-opengl sub-xmlpatterns sub-phonon
    sub-multimedia sub-svg sub-script sub-declarative sub-webkit
    sub-scripttools sub-plugins sub-imports

    这仅构建 Qt 库并跳过工具依赖项。请注意,这也可能需要相当长的时间。
  • 您现在应该在 lib 中有 64 位库。您可以在 64 位 Qt 应用程序中链接的文件夹。


  • 编辑:事实证明,即使这样还不够,因为我在链接 QtWebKit4.dll 时仍然遇到了一些问题。库(关于未解析符号的东西)。原来 someone else has already found the solution而您需要更改 QMAKE_HOST.archQMAKE_TARGET.archWebCore.pro .

    此外,上述选项将在不支持 OpenSSL 的情况下构建 QNetwork4.dll(您将无法通过 HTTPS 访问站点 - 即使在 QWebView 中)。值得庆幸的是,这并不太难解决。下载和构建 OpenSSL对于 Win64 并将以下选项附加到步骤 #9 中的命令:
    -openssl -I C:\OpenSSL\inc32 -L C:\OpenSSL\out32dll

    (如果您在 C:\OpenSSL 以外的其他地方安装了 OpenSSL,则必须更改路径。)

    进一步编辑:为了省去自己做这件事的麻烦,我在这里上传了编译好的库:
    http://www.box.com/s/9710cbb278ef4890a7b5

    关于visual-studio-2010 - 如何使用 Visual C++ 2010 Express 从 32 位环境为 64 位 Windows 编译 Qt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9543753/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com