首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在装有QProcess的Windows64位操作系统上使用Qt 32位工具包编译Qt程序

在装有QProcess的Windows64位操作系统上使用Qt 32位工具包编译Qt程序
EN

Stack Overflow用户
提问于 2020-10-28 19:00:38
回答 2查看 88关注 0票数 1

我想在装有QProcess的Windows64位操作系统上用Qt32位工具包编译我的Qt程序。

我使用64位工具包进行编译,使用:C:/Qt/5.15.1/msvc2019_64/bin/qmake.exe,然后使用C:/Qt/Tools/QtCreator/bin/jom.exe,它工作得非常好。

我尝试用32位编译的事情:

代码语言:javascript
复制
QProcess envBuilder;

envBuilder.start("\"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/vcvars32.bat\"", QStringList());
envBuilder.waitForFinished();
qDebug() << envBuilder.exitCode();
qDebug() << envBuilder.readAllStandardOutput();
qDebug() << envBuilder.readAllStandardError();

envBuilder.start("\"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/vcvarsall.bat\"", {"x86"});
envBuilder.waitForFinished();
qDebug() << envBuilder.exitCode();
qDebug() << envBuilder.readAllStandardOutput();
qDebug() << envBuilder.readAllStandardError();

envBuilder.start("C:/Qt/5.15.1/msvc2019/bin/qtenv2.bat", QStringList());
envBuilder.waitForFinished();
qDebug() << envBuilder.exitCode();
qDebug() << envBuilder.readAllStandardOutput();
qDebug() << envBuilder.readAllStandardError();

envBuilder.start("C:/Qt/5.15.1/msvc2019/bin/qmake.exe", {"MyProject.pro", "-o", "Makefile", "-spec", "win32-msvc", "\"CONFIG+=qtquickcompiler\""});
envBuilder.waitForFinished();
qDebug() << envBuilder.exitCode();
qDebug() << envBuilder.readAllStandardOutput();
qDebug() << envBuilder.readAllStandardError();

envBuilder.start("C:/Qt/Tools/QtCreator/bin/jom.exe", {"-f", "Makefile", "/D", "release"});
envBuilder.waitForFinished();
qDebug() << envBuilder.exitCode();
qDebug() << envBuilder.readAllStandardOutput();
qDebug() << envBuilder.readAllStandardError();

编译正确开始,但在链接它时输出:

代码语言:javascript
复制
Qt5Charts.lib(Qt5Charts.dll) : fatal error LNK1112: module machine type 'x86' conflicts with target machine type 'x64'

我错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-29 18:42:52

感谢所有的评论,最终起作用的是:

代码语言:javascript
复制
QProcess envBuilder;

envBuilder.start("\"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/vcvars32.bat\" && C:/Qt/5.15.1/msvc2019/bin/qtenv2.bat && C:/Qt/5.15.1/msvc2019/bin/qmake.exe", {"MyProject.pro", "-o", "Makefile", "-spec", "win32-msvc", "\"CONFIG+=qtquickcompiler\""});
envBuilder.waitForFinished();
qDebug() << envBuilder.exitCode();
qDebug() << envBuilder.readAllStandardOutput();
qDebug() << envBuilder.readAllStandardError();

envBuilder.start("\"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/vcvars32.bat\" && C:/Qt/Tools/QtCreator/bin/jom.exe", {"-f", "Makefile", "/D", "release"});
envBuilder.waitForFinished();
qDebug() << envBuilder.exitCode();
qDebug() << envBuilder.readAllStandardOutput();
qDebug() << envBuilder.readAllStandardError();
票数 0
EN

Stack Overflow用户

发布于 2020-10-28 23:25:09

您的错误是因为您使用64位库编译32位目标(反之亦然)。

一方面,仔细选择您使用的vcvarsXXXX.bat版本。

我说的是这条线

代码语言:javascript
复制
C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/vcvars32.bat

您会发现此bat文件有许多不同目标的变体。

另一方面,您可能还想验证compilation kits中的路径是否没有混合路径(例如:对32位工具包使用64位路径,反之亦然)

你可能还想检查一下here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64571474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档