【问题标题】:extern "C" char** environ - Windows - C++/CLIextern "C" char** 环境 - Windows - C++/CLI
【发布时间】:2010-04-22 16:58:58
【问题描述】:

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

extern "C" char** environ;

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

【问题讨论】:

  • 您使用的是哪个/clr 选项:/clr/clr:pure/clr:safe

标签: c++-cli porting


【解决方案1】:

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

显然,出于某种原因,C++/CLI 没有对其进行初始化。

要解决这个问题,您可以自己分配它并填写 getenv (C) 或 Environment.GetEnvironmentVariables (托管 C++)。我不知道有什么就地修复,但应该不会太难。

【讨论】:

    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多