在64位机器上构建32位Qt应用程序

4

我正在使用Windows 7 64位QT 5.9.1和MSCV 2017 64位编译器。

我尝试在这个环境中构建一个32位应用程序,并链接到一个32位库,但我似乎找不到正确的选项组合来完成这个任务,也不知道这是否可能。

我看到一些解决方案使用

TARGET = 32bit_binary

QMAKE_CXXFLAGS += -m32

但我似乎无法弄清如何适应这个环境。有什么提示吗?

编辑:我还应该提到,我在使用的机器上没有互联网访问权限,也没有管理员权限,因此无法安装新版本。

我的项目也是一个子目录项目,有3个不同的.pro文件。当我对一个pro文件进行更改时,通常会将更改应用于所有文件。

编辑2:这是为了解决错误

LNK4272:库机器类型“x86”与目标机器类型“x64”冲突

LNK2019:在函数中引用的未解析外部符号

我相信一旦我可以以32位编译它,这些错误就会消失,但我不确定是否是这种情况。

编辑3:我确实有一个32位版本的qt,但它是在MINGW中,因此无法正确找到QMAKE_MSC_VER等等。如果有任何关于如何使其与MSCV2017一起工作的提示,将不胜感激。


1
这应该是可能的,我在Windows 10 64位上经常这样做。但是您绝对需要在系统上安装一个32位的Qt套件。可能没有适用于MSVC2017的32位套件,但适用于MSVC2015的32位套件也适用于2017年。请将您收到的任何错误消息放在问题中,因为它们可能包含有关出现问题的线索。 - Eelke
我添加了错误信息以及为什么我尝试这种方式的原因,以便进一步解释。 - user3466776
3个回答

5
为了解决这个问题,您需要一个32位的Qt工具包。为此,您需要进入“工具>选项>构建和运行>工具包”。然而,如果您只安装了64位的Qt,那么这个工具包很可能不可用。因此,您应该从“开始>程序>Qt>Qt维护工具”启动Qt维护工具。在这里,您需要跳过Qt登录,除非您使用的是商业版的Qt,然后单击“添加或删除组件”。现在,您应该选择您想要的工具包(Qt 32位),Qt将自动安装这些工具包。完成后,您可以返回到工具包菜单并添加它们。

我很感激您的帮助,但是这个解决方案对我不起作用,因为我没有管理员权限,不能轻松安装或卸载程序。我已经修改了我的原始帖子来说明这一点。 - user3466776
我现在在我的机器上安装了一个32位的MinGW套件,但是当我使用MSCV 2017编译器时,它不允许我选择它。实际上,当我使用MSCV 2017编译器创建自定义套件时,它告诉我该套件存在错误,并且MSCV编译器无法使用QT的MINGW版本编译代码。 - user3466776
这非常不寻常;这里的步骤应该有效...(链接为 https://dev59.com/SaLia4cB1Zd3GeqPfztQ) - Arnav Borborah
我认为问题在于我选择的编译器是Microsoft Visual C++ Compiler 15.0 (x86_amd64),Qt版本为QT 5.9.1 MinGW 32位。我得到的错误信息说它无法编译该代码,如果我查看编译器输出,它会说找不到QMAKE_MSC_VER,这是编译或构建所需的。我按照上述步骤操作,但无法解决这个特定的问题。 - user3466776

3

我认为放入你的.pro文件中的规范文本应该是这样的:

CONFIG -= x86_64
CONFIG += x86

第一行确保不会构建64位二进制文件,第二行确保将构建32位二进制文件。


这似乎对我没有什么作用。我仍然得到与之前相似的错误。 - user3466776

2

您需要在Qt Creator中创建一个32位工具包以生成32位可执行文件。

要配置您的工具包,请转到:工具 > 选项 > 构建和运行 > 工具包

之后,您可以为您的项目激活该工具包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接