내 응용 프로그램에서는 glen unsetenv 같은 것이 있어야하기 때문에 _environ 변수에 직접 액세스해야합니다 (setenv 또는 putenv를 사용할 수 없음)./MT 우리는 일부 시스템에서 매니페스트 몇 가지 문제를 가지고 때까지어떻게 MSVC 2005 오류를 해결할 수 있습니다 : 확인할 수없는 외부 기호 __environ
//////////////////////
// unsetenv for WIN32, taken from libc source
int unsetenv(const char *name)
{
size_t len;
char **ep;
if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
{
return -1;
}
len = strlen (name);
ep = _environ;
while (*ep != NULL)
if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
{
/* Found it. Remove this pointer by moving later ones back. */
char **dp = ep;
do
dp[0] = dp[1];
while (*dp++);
/* Continue the loop in case NAME appears again. */
}
else
++ep;
return 0;
}
그것은 좋은 일했다, 그래서 우리는 런타임 라이브러리의 정적 버전 (사용하려고 :
이
은 내가 사용하는 데 필요한 코드입니다 깃발). 나는 here를 읽고이 변수가 쓸모 없게하고 사용되지 않는 한 많은 다른 장소에서unresolved external symbol __environ
:
지금, 나는이 오류를 얻고있다. 가능한 해결책에 대해 궁금합니다. 또한 우리는 Windows 98을 지원하기를 원하기 때문에 _wenviron 변수를 사용할 수 없습니다.
프로젝트 설정에서 MBCS (유니 코드가 아님)를 사용하도록 명시 적으로 설정했습니다. 나는 약간 비틀 거렸다. 내가 설정해야 할 것이 있습니까?
테스트를 위해서도 유니 코드 버전을 사용해 보았습니다. 나는. 이 코드는
내가 왜 명시 적으로 MBCS가 아닌 유니 코드를 사용하도록 설정했기 때문에 컴파일 된 이유인지 궁금합니다. 하지만 아마도 그게 다른 것을 의미 할 수도 있습니다. (누군가가 여기 가르치 려 수 있습니까?)
어쨌든,이 이러한 오류가 발생합니다
1>AuxLib.obj : error LNK2001: unresolved external symbol __wenviron
1>ExtractInfo.obj : error LNK2001: unresolved external symbol __environ
AuxLib.obj이 unsetenv를 사용하여 파일()입니다. 그래서 한 번 더 오류가 발생했습니다.
나는이 줄 사이를 읽고 있는데, 몇 가지 실험을하고 동일한 컴파일 및 링크 플래그를 사용하여 _wenviron 변수에 링크 할 수 있지만 _environ은 사용할 수 없습니까? –
방금 시도 : 그 _wenviron (정말 나를 위해 해결책이 아니었지만 테스트를 위해)을 사용하기 위해 그것을 recoded,하지만 난 오류가있어 : 해결되지 않은 외부 기호 __wenviron – Albert