2009-07-23 5 views
0

VS 2008을 사용하고 멀티 스레드 디버그 (/ MTd)로 응용 프로그램을 컴파일하고 있습니다. 기호가Visual Studio C++ - 해결되지 않은 기호 __environ

error LNK2001: unresolved external symbol __environ 

을 정의한다 : 나는 다음과 같은 오류가 발생 링크에서 시간?

감사 디마

답변

3

당신은/메릴랜드 (또는 변형)를 사용하고, 기호 _environ_wenviron 함수 호출로 대체됩니다. 이러한 기호 (사용되지 않는 기호 및 사용되지 않는 기호)를 사용하는 코드를 추적하여 use the proper function names로 만들어야합니다. google에도 같은 문제가있는 사람이 많이 있습니다. 당신은 와이드 문자 버전 _wenviron에있는 기호 _environ의 사용을 변경하는 경우

Polling _environ in a Unicode context is meaningless when /MD or /MDd linkage is used. For the CRT DLL, the type (wide or multibyte) of the program is unknown. Only the multibyte type is created because that is the most likely scenario.

는, 원래의 코드는 아마 작동합니다

은 좀 더 자세히 here을 발견했다.

+1

좋아, 그래서 getenv_s, _wgetenv_s 및 _putenv_s, _wputenv_s 사용해야합니다. 하지만 모든 환경 변수에 대해 반복을 원한다면 어떻게해야할까요? – dimba

+0

좀 더 자세하게 추가했습니다./Md를 사용하는 경우 _wenviron 기호를 사용해야합니다. –

1

documentation이 설명하는 것처럼 _environ은 Stdlib.h에서 선언되고 crt lib에서 구현됩니다.

따라서이 라이브러리에 연결하는 데 문제가 있거나 잘못된 라이브러리를 가져 오는 것이 좋습니다 (빌드 경로를 확인해보십시오).

관련 문제