extern "C" char ** environment - Windows - C ++ / CLI - PullRequest
2 голосов
/ 22 апреля 2010

У меня есть старый Linux-код, который я пытаюсь перенести на Windows. Когда я впервые построил ее как прямую нативную DLL, у меня не возникло проблем с этим фрагментом кода, но когда я попытался сделать из нее DLL C ++ / CLI в смешанном режиме, у меня возникла неразрешенная ошибка внешнего объекта:

extern "C" char** environ;

Почему это работает для родного, а не CLI? Любая идея, как обойти это, или что это вообще делает?

1 Ответ

3 голосов
/ 22 апреля 2010

Содержит переменные среды (PATH и т. Д.).Стандарт C (если я правильно помню) требует environ для указания массива этих переменных.Они также передаются в качестве третьего аргумента в функцию точки входа * 1002. *

Очевидно, по какой-то причине C ++ / CLI не инициализирует это.

Чтобы это исправить,Вы можете выделить его самостоятельно и заполнить либо getenv (C), либо Environment.GetEnvironmentVariables (Managed C ++).Я не знаю ни одного исправления на месте, но это не должно быть слишком сложно.

...