关于 Qt编译时使用msvc编译器报错“Error: cannot open ...main.obj.10836.32.jom for write” 的解决方法

MSVC2015 编译错误解决方案
本文详细介绍了在使用MSVC2015 32位编译器进行自定义控件和功能模块库开发时遇到的编译错误:“Error:cannot open C:Users...main.obj... for write”。提供了取消使用jom代替nmake的勾选及调整环境变量的方法,并指导如何正确配置cl.exe和cldll.dll文件路径以解决问题。

转载:

需求
最近整理开发自定义控件和功能模块库,使用到msvc2015 32位编译器。

问题
报错:“Error: cannot open C:\Users\Dí?ú??a\AppData\Local\Temp\main.obj.10836.32.jom for write”

    如下图:

在这里插入图片描述

解决方法(注意:该问题跟是否中文用户名路径没有关系)
点击“项目”->“Manage Kits…”->“概要”->“取消‘使用jom代替nmake‘勾选”,如下图:
在这里插入图片描述

    编译若还有错误,则是环境变量没配置(主要是装的VS2017实际用的2015的VC14),进入命令行运行环境配置脚本:

在这里插入图片描述
在这里插入图片描述
重启qt,编译程序会继续报错

此时,只需要将对应的cl.exe和cldll.dll拷贝到vc14目录下即可,如下图:

在这里插入图片描述

拷贝至:在这里插入图片描述

再编译,即编译成功!!!

原文链接:https://blog.youkuaiyun.com/qq21497936/article/details/86373892

使用 Qt 进行编译时,如果遇到报错信息 `Error: cannot open C:\Users\AppData\Local\Temp\main.obj for write`,通常表明编译器无法写入临时生成的目标文件。以下是可能的解决方法: 1. **关闭“使用 jom 代替 nmake”选项** 打开 Qt Creator,进入 `项目(Project)` 菜单,选择 `Manage Kits...`,然后切换到 `概要(Summary)` 标签页,取消勾选 `使用 jom 代替 nmake(Use jom instead of nmake)` 选项。该问题可能与多线程编译工具 jom 的兼容性有关[^2]。 2. **检查环境变量配置** 如果取消 jom 后仍然存在问题,可能是由于开发环境的路径或环境变量未正确设置。特别是当安装了多个版本的 Visual Studio(如 VS2017 却试图使用 VC14/VS2015 编译器)时,需要确保运行正确的环境配置脚本以设置合适的路径和依赖项[^2]。 3. **手动复制缺失的编译器组件** 在某些情况下,编译失败可能是因为缺少必要的编译器可执行文件(如 `cl.exe` 和 `cldll.dll`)。将这些文件从实际使用的 Visual Studio 安装目录中复制到目标 VC14 目录下,可以修复相关依赖问题。 4. **检查用户权限和文件锁定情况** 确保当前用户对系统临时目录(如 `C:\Users\AppData\Local\Temp`)具有写权限,并且没有其他进程正在占用目标 `.obj` 文件。可以通过重启电脑来释放被锁定的资源[^1]。 5. **验证 Qt Kit 配置** 检查所使用Qt Kit 是否正确指向对应的编译器版本(例如 MSVC 2015 或更高版本),并且确保所有相关的开发工具链均已正确安装。 6. **尝试清理构建缓存** 删除项目中的临时构建文件(包括 `build-*` 目录和 `Makefile`),然后重新运行 qmake 或 CMake 来生成新的构建文件。 7. **使用管理员权限运行 Qt Creator** 如果权限不足导致无法写入某些受保护的系统目录,请尝试以管理员身份启动 Qt Creator,这有助于绕过部分访问控制限制。 ### 示例:修改项目配置禁用 jom ```qmake # 在 .pro 文件中显式指定使用 nmake QMAKE_EXTRA_COMPILERS += \ QMAKE_COMPILER_CXXFLAGS = -nologo ``` ### 示例:运行 Visual Studio 环境配置脚本 ```cmd call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值