【发布时间】:2010-11-13 07:33:06
【问题描述】:
我正在使用 VS 2008 并使用多线程调试 (/MTd) 编译我的应用程序。 在链接时我收到以下错误:
error LNK2001: unresolved external symbol __environ
符号在哪里定义?
谢谢 迪玛
【问题讨论】:
标签: c++ visual-studio compiler-construction
我正在使用 VS 2008 并使用多线程调试 (/MTd) 编译我的应用程序。 在链接时我收到以下错误:
error LNK2001: unresolved external symbol __environ
符号在哪里定义?
谢谢 迪玛
【问题讨论】:
标签: c++ visual-studio compiler-construction
当您使用 /Md(或变体)时,符号 _environ 和 _wenviron 将替换为函数调用。您需要追踪使用这些(过时和弃用)符号的代码,并将它们设为use the proper function names。我在google 也发现了很多人和你有同样问题的人。
我发现了更多细节here:
在 Unicode 上下文中轮询 _environ /MD 或 /MDd 时无意义 使用联动。对于 CRT DLL, 的类型(宽或多字节) 程序未知。只有多字节 类型被创建,因为那是 最有可能的情况。
如果您将符号 _environ 的使用更改为宽字符版本 _wenviron,您的原始代码可能会工作。
【讨论】:
正如documentation 所述,_environ 在 Stdlib.h 中声明并在 crt 库中实现。
因此,您可能在链接此库时遇到问题,或者它选择了错误的库(尝试检查您的构建路径)。
【讨论】: