카테고리 없음

LNK2005: VC++에서 이미 정의된 삭제 오류

스택큐힙리스트 2023. 10. 25. 09:14
반응형

환경 공간
_ACP_ATLPROV=C:\Program Files\Microsoft Visual Studio 9.0\VC\Bin\ATLProv.dll
_ACP_INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\include;C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\include
_ACP_LIB=C:\fta\tara\database\build\Debug;C:\Program Files\Microsoft Visual Studio 9.0\VC\lib;C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib;C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib\i386;C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib;C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib;C:\Program Files\Microsoft Visual Studio 9.0\;C:\Program Files\Microsoft Visual Studio 9.0\lib
_ACP_PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 9.0\Common7\tools;C:\Program Files\Microsoft Visual Studio 9.0\Common7\ide;C:\Program Files\HTML Help Workshop;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 9.0\;C:\WINDOWS\SysWow64;;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files\GnuWin32\bin;C:\Python26
ALLUSERSPROFILE=C:\Documents and Settings\모든 사용자
CLIENTNAME=콘솔
CommonProgramFiles=C:\Program Files\Common Files
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\include;C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\include
LIB=C:\fta\tara\database\build\Debug;C:\Program Files\Microsoft Visual Studio 9.0\VC\lib;C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib;C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib\i386;C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib;C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib;C:\Program Files\Microsoft Visual Studio 9.0\;C:\Program Files\Microsoft Visual Studio 9.0\lib
LIBPATH=c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib;C:\Program Files\Microsoft Visual Studio 9.0\VC\lib
LOGONSERVER=\\xxx
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 9.0\Common7\tools;C:\Program Files\Microsoft Visual Studio 9.0\Common7\ide;C:\Program Files\HTML Help Workshop;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 9.0\;C:\WINDOWS\SysWow64;;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files\GnuWin32\bin;C:\Python26
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS

도와주세요. 이미 3일 동안 인터넷을 찾아다니며 가능한 모든 해결책을 시도해봤지만 아무런 도움이 되지 않았습니다.


미리 감사합니다,
SG

답변 1

보통이면 실행 가능한 파일 (.EXE 및 .DLL)을 링크하려고 시도하는 것을 의미합니다. 이때 런타임 라이브러리의 다른 버전과 링크하게 됩니다. (DLL을 함께 또는 EXE 파일에 링크하는 경우 일반적으로 RTL의 동적 버전을 사용해야 합니다.)

답변 2

VC++에서 LNK2005 오류: 이미 정의된 항목 삭제 오류
VC++에서 LNK2005 오류는 C/C++ 프로그램 작성 시 자주 발생하며, 이미 정의된 항목 삭제 오류를 의미합니다. 이 오류는 주로 동일한 이름을 가진 함수, 변수 또는 객체가 여러 번 정의되었을 때 발생합니다. 프로그래밍 시 이러한 오류를 최소화하고 해결하는 것은 중요합니다.
이 오류는 프로그램이 링크되는 과정에서 발생하는데, C/C++ 컴파일러에서 함수나 변수가 중복 정의되면 컴파일 시 에러를 발생시킵니다. 이러한 에러는 동일한 이름을 가진 여러 개의 소스 파일이 링크되는 경우에 흔히 발생합니다. 이제 LNK2005 오류를 해결하기 위해 몇 가지 방법을 알아보겠습니다.
첫 번째로, 오류가 발생하는 가장 일반적인 이유는 동일한 이름을 가진 함수나 변수 등이 서로 다른 cpp 파일에 중복해서 정의되었을 때입니다. 컴파일러가 이러한 오류를 발견할 경우, 중복 정의된 항목 중 어떤 것을 사용해야 하는지 혼란스러워합니다. 따라서, 다른 cpp 파일에 정의된 항목들을 중복 정의된 곳에서 제거하거나 이름을 변경하여 해결할 수 있습니다.
두 번째로, 이 오류는 헤더 파일이 여러 소스 파일에 중복 포함되었을 때도 발생할 수 있습니다. 중복 포함된 헤더 파일에서 다른 헤더 파일들이 중복해서 정의된다면, 링킹 단계에서 충돌이 발생할 수 있습니다. 이러한 경우에는 헤더 파일의 중복 포함을 방지하거나, 헤더 파일에 중복 정의를 방지하기 위한 #ifndef 지시문을 추가해 주는 등의 방법을 사용할 수 있습니다.
세 번째로, 정적 라이브러리나 동적 라이브러리를 사용하는 경우, 라이브러리가 중복으로 링크되는 경우에도 LNK2005 오류가 발생할 수 있습니다. 이 경우에는 링커 설정을 적절하게 조정하여 중복 링크를 방지해야 합니다.
마지막으로, VC++ 프로젝트의 프로퍼티 설정을 확인하는 것도 중요합니다. 올바른 링크 설정을 위해 링커, 컴파일러 및 프로젝트 설정을 검토하고 필요한 변경 사항을 적용해야 합니다. 이러한 설정들을 올바르게 사용한다면 LNK2005 오류를 예방할 수 있습니다.
LNK2005 오류는 VC++에서 자주 발생하는 오류 중 하나로, 이미 정의된 항목 삭제 오류를 의미합니다. 이 오류를 해결하기 위해 중복 정의된 항목들을 삭제하거나 이름을 변경하고, 헤더 파일의 중복 포함을 방지하며, 라이브러리의 중복 링크를 방지하는 등의 방법을 사용할 수 있습니다. 또한 링커 및 프로젝트 설정을 검토하여 올바르게 설정하는 것이 중요합니다. 이러한 조치들을 적용하면 프로그램에서 LNK2005 오류를 방지하고 안정적인 개발 환경을 마련할 수 있습니다.

반응형