0

我在 Windows 上有一个 C++ 项目,在该项目上我使用getenv方法 fromstdlib来获取环境变量的值$MyVar 当我MyVar在 cmd 中设置变量然后在命令行中调用我的程序时,一切正常。但是当我从 Visual Studio (2012) 调用它时,该程序$MyVar被视为未设置。

为了尝试在 Visual Studio 中设置它,我尝试使用属性表将宏定义MyVar为环境变量(参见下图),但getenv方法 fromstdlib没有看到它。

我尝试在 Visual Studio 中定义 env 变量的窗口的屏幕截图

有没有办法在 Visual Studio 中定义我的环境变量,并且该getenv方法stdlib可以识别它?

预先感谢大家的帮助

编辑: 我知道如果我将它定义为全局环境变量,该getenv方法会识别MyVar,但这对我来说不是一个解决方案,因为我希望能够同时启动我的程序的多个实例,具有不同的MyVar. 我需要一种在 Visual Studio 中定义本地环境变量的方法,当我从 Visual Studio 启动它时,我的程序会识别该变量。

4

2 回答 2

0

问题是:有不同的环境,所以一旦你在一个环境中创建了一个 var,它就不会出现在其他环境中。

1) 创建 cmd 会话后,操作系统会为其创建专用环境。因此,一旦您在提示符中创建了一个 var,在此 cmd 中启动的任何应用程序都可以看到该 var。一旦你杀死了那个 cmd,所有的变量也都消失了。

2)如果您需要全局更改环境变量,您必须访问“高级系统设置”对话框(控制面板\系统和安全\系统),然后单击“环境变量”按钮并进行编辑。注意:您可能需要重新启动子会话以让他们看到全局环境变量的变化。

于 2018-01-09T11:39:16.893 回答
0

在您描述的最新更新之后,我建议使用命令行参数而不是(或随附)环境级别变量。它们是特定于实例的,易于实现等。

而且,更重要的是,它们是无国籍的。

于 2018-01-09T12:05:45.027 回答