【发布时间】:2014-01-17 03:16:17
【问题描述】:
这是一些从 Qt 内部获取环境变量的代码,但是,Qt 的 QProcessEnvironment::systemEnvironment() 似乎只反映了重启后新的环境变量更改。所以我正在考虑使用getenv。
但是我从这里得到了"error C2220: warning treated as error - no 'object' file generated":
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
const QString ENGINE_ROOT = env.value("ENGINE_ROOT", "") != "" ?
env.value("ENGINE_ROOT","") : QString(getenv("ENGINE_ROOT"));
不要告诉我禁用/WX或将W4降低到W3之类的东西,我不想听到这个,我想知道究竟是什么原因
没有生成“对象”文件
.
【问题讨论】:
-
您实际收到的警告是什么,触发了 C2220 错误?您的编译器设置为将警告视为错误,错误会导致编译器不生成输出目标文件。为了避免该错误,您需要修复警告。
-
此外,您最初的“仅在重新启动后反映新的环境变量更改”的问题可能只需重新打开命令提示符窗口(或打开一个新窗口)即可解决。命令提示符窗口继承的环境变量是打开时生效的环境变量。 (或者,any 进程继承的环境变量,例如包括您的 IDE。)
-
我说的不是在 cmd.exe 中执行它,如果您重新打开另一个 cmd.exe,那么您当然会看到它反映了新的环境变量。我说的是 Qt 中的检索环境变量,它似乎无法即时反映新的变化。
-
OP 陷入了认为“没有生成'对象'文件”是导致错误的警告的陷阱。该错误在 imo 中的措辞含糊不清,并引起了这种混淆。