0

这是一些从 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 之类的东西,我不想听到这个,我想知道究竟是什么原因

没有生成“对象”文件

.

4

3 回答 3

10

“错误 C2220:警告视为错误 - 未生成‘对象’文件”

该错误已经回答了您的问题:

  1. 产生了警告。
  2. 因为您告诉编译器将警告视为错误,所以发生了错误
  3. 由于发生错误,编译器没有生成目标文件。

如果您想知道原始警告的含义,那么您需要向我们询问该警告。

于 2014-01-17T08:55:35.080 回答
4

我刚遇到这个问题。混淆的真正根源是 Microsoft Visual Studio 列出了
错误 C2220:警告被视为错误 - 没有
与警告分开生成“对象”文件行 - 有时甚至警告之前 - 所以这个错误并不立即明显与列出的警告有关。

修复列出的所有警告以解决此问题。

于 2014-09-16T17:54:56.127 回答
3

我将解决根本问题而不是编译问题。

当您的新进程启动时,任何进程的环境变量都会从其父进程的环境变量中复制。从那时起,唯一可以修改它们的是您自己的流程。

实际上,这意味着转到 Windows 对话框更改环境变量不会更改任何现有进程的这些值。这些更改将应用​​于explorer.exe进程,然后从 Explorer 启动任何新进程。

Windows 应用程序可以通过一种可能的方式获得资源管理器对环境变量所做更改的通知。有关详细信息,请参阅如何通过 Windows中的命令行明确修改 PATH 变量。

于 2014-01-17T03:35:29.690 回答