Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> unresolved external symbol __environ 
V
    Опции темы
_hunter
  Дата 11.10.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



ДОбрый день.

Пытаюсь собрать студийный проект из проекта, собираемого скриптами.
Все бы хорошо, но при линковке появляется сообщение "error LNK2001: unresolved external symbol __environ"
этот символ объявлен в одном из .cpp-шников как "extern char **_environ;"
все что нашел по этому поводу в MSDN'е:
http://msdn2.microsoft.com/en-us/library/s...1x1(VS.71).aspx
(но там нет ни слова о подключаемой .lib'е)
Что с этим делать?

С уважением...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
zkv
Дата 11.10.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(_hunter @  11.10.2007,  12:47 Найти цитируемый пост)
(но там нет ни слова о подключаемой .lib'е)

дык в стандартных верно должен быть прописан, только по умолчанию они автоматом подключаются... 
Какая именно подключается - от настроек проекта зависит (C|C++->Code generation->Runtime library)

проверил на консольном проекте с настройками по умолчанию такой код работает:
Код

#include <Stdlib.h>
//...    
printf ("\nextern char **_environ == %p", _environ );
    

Это сообщение отредактировал(а) zkv - 11.10.2007, 13:15
PM MAIL   Вверх
_hunter
Дата 11.10.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



/MDd у меня в ключах есть...

что-нить еще можно с этим сделать?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Sartorius
Дата 11.10.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



 Есть предложение самому его определить и заполнить
 Это конечно через одно место, но если ничего другого не получится...

Это сообщение отредактировал(а) Sartorius - 11.10.2007, 13:28
PM MAIL ICQ   Вверх
zkv
Дата 11.10.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(_hunter @  11.10.2007,  13:16 Найти цитируемый пост)
/MDd у меня в ключах есть...

может Ignore all defaults library установлен?
проект не dll-ка?
а если вместо extern char **_environ; подставить #include <Stdlib.h> ?

Это сообщение отредактировал(а) zkv - 11.10.2007, 13:59
PM MAIL   Вверх
_hunter
Дата 11.10.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



Цитата(zkv @  11.10.2007,  13:58 Найти цитируемый пост)
может Ignore all defaults library установлен?

я этот проект с нуля собирал. все флаги (кроме юникода) -- дефолтные.

Цитата(zkv @  11.10.2007,  13:58 Найти цитируемый пост)
проект не dll-ка?

dll-ка. а что, есть какая-то разница?

Цитата(zkv @  11.10.2007,  13:58 Найти цитируемый пост)
а если вместо extern char **_environ; подставить #include <Stdlib.h> ?

Stdlib.h там и так уже стоит...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
zkv
Дата 11.10.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(_hunter @  11.10.2007,  14:13 Найти цитируемый пост)
dll-ка. а что, есть какая-то разница?

залез в stdlib.h 
там активное объявление:
Код

_CRTIMP extern char ** _environ;
_CRTIMP дефайнится как:
Код

#ifdef  _DLL
#define _CRTIMP __declspec(dllimport)
#else   /* ndef _DLL */
#define _CRTIMP
#endif  /* _DLL */

про _DLL
Цитата

_DLL
 Defined when /MD or /MDd (Multithread DLL) is specified.

а я подумал про тип проекта smile напутал... дллка не при чем

в итоге: 
либо, судя по:
Цитата

/MDd у меня в ключах есть...
объявить так:
Код

__declspec(dllimport) extern char ** _environ;

либо подключить stdlib.h туда, где используется _environ
и проконтролировать, что там с дефайнами происходит. smile

Это сообщение отредактировал(а) zkv - 11.10.2007, 14:49
PM MAIL   Вверх
_hunter
Дата 11.10.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



Цитата(zkv @  11.10.2007,  14:39 Найти цитируемый пост)
либо подключить stdlib.h туда, где используется _environ

оно так и есть.

сейчас удалил то объявление в .cpp-шнике -- все заработало.
но возникают вопросы: как оно может компилиться скриптами (других компиляторов у меня нет). почему студия не матюкается на дубликацию деклараций? -- это ведь именно она...
но это все, в принципе, не важно...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
zkv
Дата 11.10.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(_hunter @  11.10.2007,  15:10 Найти цитируемый пост)
но возникают вопросы: как оно может компилиться скриптами (других компиляторов у меня нет). почему студия не матюкается на дубликацию деклараций?

 smile у меня ругается ворнингами...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.