【问题标题】:Visual Studio environmant variable not recognized by C++ stdlib getenvC++ stdlib getenv 无法识别 Visual Studio 环境变量
【发布时间】:2018-01-09 11:29:13
【问题描述】:

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

为了尝试在 Visual Studio 中设置它,我尝试使用属性表将宏 MyVar 定义为环境变量 (cf. image below),但来自 stdlibgetenv 方法看不到它.

Screenshot of the window where I tried to define the env variable in Visual Studio

有没有办法在 Visual Studio 中定义我的环境变量,以使 stdlib 中的 getenv 方法能够识别它?

提前感谢大家的帮助

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

【问题讨论】:

    标签: c++ visual-studio environment-variables getenv


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。我实际上已经知道这一点,但我想做的是在 Visual Studio 启动程序的环境中创建一个本地环境变量。我希望能够使用不同的环境变量值同时启动我的程序的多个实例,因此我不想为MyVar 定义全局环境变量。因此:有没有办法在 VS 启动我的程序的地方在 Visual Studio 中定义一个本地环境变量?
    • 似乎值得升级你的VS。在 2015 和 2017 版本中,我可以看到用于调试的 env 设置。这可以在 2012 年找到:stackoverflow.com/questions/22529919/…
    【解决方案2】:

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

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

    【讨论】:

    • 我认为你是对的,但问题是我不是一个人在这个项目上工作,不幸的是我别无选择,我有义务使用环境变量而不是参数
    猜你喜欢
    • 2015-10-03
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多