cpp파일에 include 된 같은 폴더 내에 위치한 hpp파일이 안열리네요 ㅠ
글쓴이: purplerain1 / 작성시간: 목, 2018/09/13 - 11:27오전
안녕하세요
visual studio 2008 c++ 사용자인데요.
괴이한 현상(?)이 있어서 질문드리려고 합니다.
한 폴더 안에 cpp,hpp가 같이 있고, cpp의 상단에 해당 hpp를 include하고 있는데
(인클루드 문은 첫번째 올려드린 그림에 있습니다.)
분명 같은 폴더안에 hpp가 버젓이 존재함에도 불구하고
cpp의 include된 hpp 문서열기를 하면 현재 소스파일의 디렉터리 또는 빌드 시스템 경로에 없습니다 라는 에러가 뜹니다.
사실 도구->옵션->프로젝트 및 솔루션 VC++디렉터리에서 포함파일에 해당 폴더를 추가하면 해결되기는 하는데요.
이런 식으로 하면 모든 프로젝트에서 해당 폴더를 찾게 되어서 이렇게 하지 말고 다른 방법을 구하고자 합니다.
문제의 두 파일들은 외부 라이브러리의 소스코드라서
프로젝트 속성->C,C++일반-> 추가포함 디렉터리에 해당 폴더 추가해 주었고
링커->일반 에서도 추가라이브러리 디렉터리로 참조할 lib 파일이 있는 폴더도 넣어준 상태입니다.
당연히 해당 프로젝트 다시빌드 다 잘 되었습니다 ㅠ
혹시 비슷한 현상 해결해 보신 분들 계시면 조언 부탁드립니다
감사합니다.
File attachments:
첨부 | 파일 크기 |
---|---|
이런 에러 메세지가 뜹니다 | 53.11 KB |
분명히 두 파일은 같은 폴더내 위치하고 있습니다. | 24.39 KB |
Forums:
> 분명 같은 폴더안에 hpp가 버젓이 존재함에도
> 분명 같은 폴더안에 hpp가 버젓이 존재함에도 불구하고 cpp의 include된 hpp 문서열기를 하면 현재 소스파일의 디렉터리 또는 빌드 시스템 경로에 없습니다 라는 에러가 뜹니다.
뭐 이상한 일이 아닙니다만... 이게 왜 문제이지요? 아마도 include 지시자가 사용할 때에 파일을 찾는 규칙을 모르고 계시는 것 같습니다. 한 번 알아보시는 것이 좋겠습니다.
참고해보세요.
몇가지 참조 방법이 있습니다.
- 프로젝트 속성 - include lib 경로 <-- 전체 프로젝트에 영향을 주어 불편하다면.
- 프로젝트 속성 - C++ 과 링커 - include 추가참조 / lib 추가 참조 <--- 각각 마다 하실때. 이 방법이 좋음.
- #pragma comment (lib, "test.lib"); <--- 이 방법도 편함
- #include < test.h > 환경변수 PATH 경로 <--- 일반적인 방법
- #include "test.h" 절대 경로 <--- 사용자 소스에서 사용하는 방식
- 그리고. 소스 파일을 프로젝트에 cpp h 목록에. 반드시. 추가'하셔야 합니다. (소스 파일. 경로도 일치해야 함)
원하시는것은 #include "test.h" 로 사용하시는거 같네요. ㅇ_ㅇ;;
그냥.
- #include < test.h > 로 사용.
- 프로젝트 파일 리스트에 추가
- 프로젝트 속성 C++ 과 링커에 include 와 lib 를 추가 참조 하시는 편이 나을겁니다. (프로젝트 마다 적용)
Using Additional Include Directories
https://www.codeproject.com/Tips/588022/Using-Additional-Include-Directories
/I(추가 포함 디렉터리)
https://msdn.microsoft.com/ko-kr/library/73f9s62w.aspx
What is the difference between “Include Directories” and “Additional Include Directories”
https://stackoverflow.com/questions/6883276/what-is-the-difference-between-include-directories-and-additional-include-dir
VisualStudio 2013 라이브러리 추가
http://eram.tistory.com/entry/Visual-Studio-2013-라이브러리-추가
Example: Configuring MS Visual C++ to use external libraries
https://en.wikibooks.org/wiki/C%2B%2B_Programming/Compiler/Linker/Libraries/Configuring_Visual_Studio
How to build applications with OpenCV inside the Microsoft Visual Studio
https://docs.opencv.org/2.4/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html
//
HOWTO Specify the Location of Libraries for use with MinGW
http://www.mingw.org/wiki/HOWTO_Specify_the_Location_of_Libraries_for_use_with_MinGW
$ export LIBRARY_PATH
$ LIBRARY_PATH="C:/mingw/local/lib;$LIBRARY_PATH"
Adding Libraries to Projects
http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
답변 감사합니다. 하지만 여전히 의문사항이 ㅠ
바쁘신데 시간내주셔서 감사합니다.
<> 로 해도 include 문이 쓰인 소스코드가 들어있는 폴더에서 찾는 거라고 생각했네요. 지적해 주셔서 감사합니다.
근데 이게 다른 폴더에 있는 외부 프로젝트의 파일들을 디버깅하면서 보다가 문서 열기가 안 되는 거라서요ㅠ
예를 들어 제가 디버깅하고 있는 프로젝트가
D:\QuantLib_ELS\FinEn\HWG2_TermVol_Calibration_v2\HWG2_TermVol_Calibration_v2
안에 있고
참조하는 라이브러리의 프로젝트가 D:\QuantLib_ELS\FinEn\QuantLib-1.13
안에 있고
그 프로젝트의 lib파일은 D:\QuantLib_ELS\FinEn\QuantLib-1.13\lib
여기에 들어있고
프로젝트의 소스코드 들이 D:\QuantLib_ELS\FinEn\QuantLib-1.13\ql 안에 들어있고
그 외부 프로젝트의 소스코드 중 cpp 이 자기와 같은 위치의 hpp를 include<> 하고 있는데
제가 디버깅하는 프로젝트의 속성에서
c/c++ 일반-> 추가포함디렉터리에 "..\..\QuantLib-1.13\"
링커-> 추가 라이브러리 디렉터리에 "..\..\QuantLib-1.13\lib"
이렇게 세팅 되어있으면.
디버깅 하다가 참조 라이브러리의 소스코드의 include된 헤더파일 문서 열기 했을 때
( D:\QuantLib_ELS\FinEn\QuantLib-1.13\ql 안의 cpp,hpp파일들)
잘 찾아져야 하지 않나요?? 에러 메세지 보면 소스코드 경로를 못 찾는 거 같아서요.
그리고 include문을 ""로 바꿔서 다시 빌드해서 돌려봐도 여전히 include 문서 열기가 안되네요
그 외부 프로젝트의 cpp,hpp는 둘 다 해당 프로젝트에 잘 포함되어 있습니다.ㅠㅠ
디버깅하는 프로젝트, 외부 프로젝트 둘 다 다시 빌드 잘 되었구요 ㅠㅠ
왜 잘 찾아져야 한다고 생각하시는 지를 말씀해주세요.
왜 잘 찾아져야 한다고 생각하시는 지를 말씀해주세요. 즉, 파일을 찾는 규칙을 알고계신대로 말씀해주시면 됩니다. 대충 이야기하시면 안됩니다. "정확하게, 마치 코딩하듯이" 말씀해주세요. 그러면 무엇을 잘못 알고 계시는 지 분명해지겠지요.
네ㅠ 사실 정확히 말하면
빌드 자체는 잘 되는데
include <> 에 있는 파일명을 마우스 오른쪽 클릭하고 문서 열기를 했을 때
그 파일이 현재 소스 파일의 디렉터리 또는 빌드 시스템 경로에 없다
고 뜨는데, 사실 그 메세지 아래에 뜬 현재 소스 파일 경로에 문서열기를 하려는 파일이 들어는 상태라.
왜 저런 오류 메세지가 뜨는지 매우 궁금한 거지요 ㅠ
절대 경로로 해보세요.
드라이브 전체 경로
c:\test\lib
상대경로 지정이 헛갈릴 수 있습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
조언 주신 모든 분들께 감사드립니다 ㅠㅠ
절대 경로로 넣어 봤는데도 여전히 문서 열기가 안되네요ㅠㅠ
그런데 검색하다 보니 아래 와 같은 글을 발겼했습니다.
https://developercommunity.visualstudio.com/content/problem/10534/cant-open-document-from-include-directive.html
아무래도 제 문제가 이거랑 비슷한 거 같은데 vs 최신판에선 해결되었다고 달려있네요 ㅠㅠ
회사에서 2008을 쓰는지라;;;;;
시간 내어 주신 모든 분들께 정말 감사드립니다.
참고해보세요.
- MFC 의 경우. 중복되는 변수 선언은 stdafx.h 에 넣으셔야 합니다.
- 작은 테스트 프로젝트.를 하나 별도로. 만들어서 해보세요. 될겁니다.
- 잘 되는. 책 예제 소스를 사용하는 방법도 있습니다.
- 다른 버전에 컴파일러를 사용하는 방법
- 다른 컴퓨터에서 확인하는 방법
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기