【问题标题】:Visual Studio C++ - unresolved symbol __environVisual Studio C++ - 未解析的符号 __environ
【发布时间】:2010-11-13 07:33:06
【问题描述】:

我正在使用 VS 2008 并使用多线程调试 (/MTd) 编译我的应用程序。 在链接时我收到以下错误:

error LNK2001: unresolved external symbol __environ

符号在哪里定义?

谢谢 迪玛

【问题讨论】:

    标签: c++ visual-studio compiler-construction


    【解决方案1】:

    当您使用 /Md(或变体)时,符号 _environ_wenviron 将替换为函数调用。您需要追踪使用这些(过时和弃用)符号的代码,并将它们设为use the proper function names。我在google 也发现了很多人和你有同样问题的人。

    我发现了更多细节here

    在 Unicode 上下文中轮询 _environ /MD 或 /MDd 时无意义 使用联动。对于 CRT DLL, 的类型(宽或多字节) 程序未知。只有多字节 类型被创建,因为那是 最有可能的情况。

    如果您将符号 _environ 的使用更改为宽字符版本 _wenviron,您的原始代码可能会工作。

    【讨论】:

    • 好的,所以我需要使用 getenv_s、_wgetenv_s 和 _putenv_s、_wputenv_s。但是如果我想遍历所有环境变量呢?
    • 我添加了更多细节,如果您使用 /Md,您应该使用 _wenviron 符号
    【解决方案2】:

    正如documentation 所述,_environ 在 Stdlib.h 中声明并在 crt 库中实现。

    因此,您可能在链接此库时遇到问题,或者它选择了错误的库(尝试检查您的构建路径)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多