extern“C”char ** environ - Windows - C ++ / CLI

时间:2010-04-22 16:58:58

标签: c++-cli porting

我有一些旧的linux代码,我正在尝试移植到Windows。 当我第一次将它构建为直接本机DLL时,我对这段代码没有任何问题,但是当我尝试将其作为混合模式C ++ / CLI DLL时,我得到了一个未解决的外部对象错误:

extern "C" char** environ;

为什么这适用于本机而不是CLI? 知道如何解决这个问题,或者它甚至做了什么?

1 个答案:

答案 0 :(得分:3)

它包含环境变量(PATH等)。 C标准(如果我没记错)需要environ指向这些变量的数组。它们也作为第3个参数传递给main入口点函数。

显然,由于某种原因,C ++ / CLI没有初始化它。

要解决此问题,您可以自行分配并填写getenv(C)或Environment.GetEnvironmentVariables(托管C ++)。我不知道任何就地修复,但它不应该太难。