我有一些旧的linux代码,我正在尝试移植到Windows。 当我第一次将它构建为直接本机DLL时,我对这段代码没有任何问题,但是当我尝试将其作为混合模式C ++ / CLI DLL时,我得到了一个未解决的外部对象错误:
extern "C" char** environ;
为什么这适用于本机而不是CLI? 知道如何解决这个问题,或者它甚至做了什么?
答案 0 :(得分:3)
它包含环境变量(PATH等)。 C标准(如果我没记错)需要environ
指向这些变量的数组。它们也作为第3个参数传递给main
入口点函数。
显然,由于某种原因,C ++ / CLI没有初始化它。
要解决此问题,您可以自行分配并填写getenv(C)或Environment.GetEnvironmentVariables(托管C ++)。我不知道任何就地修复,但它不应该太难。