저는 Visual Studio 2010 (C ++)의 사소하지 않은 경고로 머리가 거의 맞지 않았습니다.
컴파일 결과는 다음과 같습니다.
1 Debug \ is.obj : 경고 LNK4042 : 개체가 두 번 이상 지정되었습니다. 추가 무시 됨
1 Debug \ make.obj : 경고 LNK4042 : 개체가 두 번 이상 지정되었습니다. 추가 항목 무시 됨
1 Debug \ view.obj : 경고 LNK4042 : 개체가 두 번 이상 지정되었습니다. extras ignore
1 identity.obj : error LNK2019 : unresolved external symbolvoid __cdecl test::identity::view(void)
(? view @ identity @ test @@ YAXXZ) referenced in functionvoid __cdecl test::identity::identity(void)
(? identity @ 0test @@ YAXXZ)
1 identity.obj : error LNK2019 : unresolved external symbolvoid __cdecl test::identity::make(void)
(? make @ identity @ test @@ YAXXZ) 함수에서 참조 됨void __cdecl test::identity::identity(void)
(? identity @ 0test @@ YAXXZ)
1 range.obj : 오류 LNK2019 :void __cdecl test::range::is(void)
함수void __cdecl test::range::range(void)
(? range @ 0test 에서 참조되는 해결되지 않은 외부 기호 (? is @ range @ test @@ YAXXZ) @@ YAXXZ)
링커 오류는 항상 디버그하기가 어렵지만 해결되지 않은 참조가 있었기 때문에 확인했습니다 ...하지만 소스가 잘 구성되어 있습니다.
내 폴더 계층 구조는 다음과 같습니다.
src/
identity/
is.cpp
make.cpp
view.cpp
range/
is.cpp
make.cpp
view.cpp
솔루션의 계층도 마찬가지입니다 (저는 항상 "실제"폴더 구조를 모방하도록 설정했습니다).
그리고 진단 출력 :
Debug\is.obj
Debug\make.obj
Debug\view.obj
.obj
링커에 두 번 전달되었으며 무시 된다는 경고와 함께 .
더 이상 검색 할 필요 없음 : Visual은 내 폴더 계층 구조를 깔끔하게 정리하여 소스를 깔끔하게 컴파일 할 수 없습니다.
지금은 파일 이름을 바꾸는 것만으로 문제를 해결할 수 있습니다.
...하지만 Visual Studio가 파일 계층 구조를 평면화하지 않도록하는 방법이 있습니까?