C언어

[ 오류 ] error LNK2005: --- .obj에 이미 정의되어 있습니다. 오류

Chipmunks 2016. 8. 17.
728x90

error LNK2005: --- .obj에 이미 정의되어 있습니다. 오류

error LNK1169: 여러 번 정의된 기호가 있습니다.


C언어로 모듈 부분에서 위와 같이, main.obj에 이미 정의되어 있습니다. , 여러 번 정의된 기호가 있습니다. , 의 오류들이 발생했다.


컴파일 시에는, 아무 문제가 없지만 링킹 시에 오류가 발생한다! 그럼, 각각 파일에서는 컴파일 이상이 없지만, 링킹 작업 시에 무언가가 잘못 된 것이 분명하다.


구글링을 한 결과, 한 사람이 모듈에 정의 된 변수가 있는데,

#include "~~.h" 으로 두 번이상 중복으로 선언되어서, 똑같은 변수가 정의되어 있기 때문이었다.



논란의, 헤더파일(parkingpriceoption.h) 에 있는, int 형 배열 변수이다.



첫 번째 파일(parkingpriceoption.c)의 헤더 선언



두 번째 파일(main.c)의 헤더 선언


두 파일이 각각 컴파일 되면서, 변수가 중복 선언이 되어버려 링크 시에 링킹 오류를 발생시켰다!


저 변수, 헤더 파일(parkingpriceoption.h)에 있는 MINUTE_LIST 배열 변수, 를 중복 선언이 되지 못하게 해야 한다!


다행히 MINUTE_LIST 변수는 main.c 에서는 필요하지 않고, parkingpriceoption.c 에만 필요하기 때문에, 그 파일로 옮겨 주었다!


그 파일(parkingpriceoption.c)에서도 특히 isMinuteValid() 함수 말고는 쓰는데가 없어서, 이 함수 안에다 집어넣어 줬다.

덤으로, 필요 없는 주석은 뺏다.



성공!

댓글