getenv () говорит, что определенная переменная среды не определена только при запуске в Eclipse - PullRequest
3 голосов
/ 04 декабря 2011

ОБНОВЛЕНИЕ: проблема в Eclipse - она ​​работает с консоли.Но я все еще хотел бы, чтобы он работал в Eclipse.

Мой вывод printenv содержит строку:

PROTCAD3DIR=/home/brent/Desktop/protCAD

Но из программы, которую я пытаюсь запустить (в Eclipse), яполучить вывод:

Environment variable PROTCAD3DIR undefined.
Please set it properly and re-execute the program.

Я искал это сообщение в источнике и нашел 1 результат:

string PCGeneralIO::getEnvironmentVariable(const string& _evname)
{
    const char* convEVName = _evname.c_str();
    char* pEVString = getenv(convEVName);
    if (pEVString == 0)
    {   cout << "Environment variable " << _evname << " undefined." << endl;
        cout << "Please set it properly and re-execute the program." <<     endl;             
        exit(1);
    }               
    string EVstring = charToString(pEVString);    
    return EVstring;
}

Я почти уверен, что это вызывает вышеуказанную функцию:

string evname = "PROTCAD3DIR";
string path = PCGeneralIO::getEnvironmentVariable(evname);

Так, что может заставить getenv () найти его как неопределенное?

1 Ответ

1 голос
/ 04 декабря 2011

Проверьте вкладку «Environment» в Eclipse «Run Configuration» для вашей программы. Список должен быть пустым, и необходимо проверить «Добавить среду к собственной среде».

Редактировать , если это не помогает, то, скорее всего, Eclipse не был запущен с отсутствующей переменной. Проверьте это, создав новую «конфигурацию внешнего инструмента», используя /usr/bin/printenv в качестве программы. Запустите этот внешний инструмент и проверьте вывод. Если пропущенная переменная не упомянута, то вы должны указать точно

Я добавил определение и экспорт в файл (.configuration или что-то подобное).

часть вашего комментария: -)

...