cpp파일에 include 된 같은 폴더 내에 위치한 hpp파일이 안열리네요 ㅠ

purplerain1의 이미지

안녕하세요
visual studio 2008 c++ 사용자인데요.

괴이한 현상(?)이 있어서 질문드리려고 합니다.

한 폴더 안에 cpp,hpp가 같이 있고, cpp의 상단에 해당 hpp를 include하고 있는데
(인클루드 문은 첫번째 올려드린 그림에 있습니다.)

분명 같은 폴더안에 hpp가 버젓이 존재함에도 불구하고

cpp의 include된 hpp 문서열기를 하면 현재 소스파일의 디렉터리 또는 빌드 시스템 경로에 없습니다 라는 에러가 뜹니다.

사실 도구->옵션->프로젝트 및 솔루션 VC++디렉터리에서 포함파일에 해당 폴더를 추가하면 해결되기는 하는데요.

이런 식으로 하면 모든 프로젝트에서 해당 폴더를 찾게 되어서 이렇게 하지 말고 다른 방법을 구하고자 합니다.

문제의 두 파일들은 외부 라이브러리의 소스코드라서

프로젝트 속성->C,C++일반-> 추가포함 디렉터리에 해당 폴더 추가해 주었고

링커->일반 에서도 추가라이브러리 디렉터리로 참조할 lib 파일이 있는 폴더도 넣어준 상태입니다.

당연히 해당 프로젝트 다시빌드 다 잘 되었습니다 ㅠ

혹시 비슷한 현상 해결해 보신 분들 계시면 조언 부탁드립니다

감사합니다.

익명 사용자의 이미지

> 분명 같은 폴더안에 hpp가 버젓이 존재함에도 불구하고 cpp의 include된 hpp 문서열기를 하면 현재 소스파일의 디렉터리 또는 빌드 시스템 경로에 없습니다 라는 에러가 뜹니다.

뭐 이상한 일이 아닙니다만... 이게 왜 문제이지요? 아마도 include 지시자가 사용할 때에 파일을 찾는 규칙을 모르고 계시는 것 같습니다. 한 번 알아보시는 것이 좋겠습니다.

shint의 이미지

몇가지 참조 방법이 있습니다.
- 프로젝트 속성 - 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

purplerain1의 이미지

바쁘신데 시간내주셔서 감사합니다.

<> 로 해도 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는 둘 다 해당 프로젝트에 잘 포함되어 있습니다.ㅠㅠ

디버깅하는 프로젝트, 외부 프로젝트 둘 다 다시 빌드 잘 되었구요 ㅠㅠ

익명 사용자의 이미지

왜 잘 찾아져야 한다고 생각하시는 지를 말씀해주세요. 즉, 파일을 찾는 규칙을 알고계신대로 말씀해주시면 됩니다. 대충 이야기하시면 안됩니다. "정확하게, 마치 코딩하듯이" 말씀해주세요. 그러면 무엇을 잘못 알고 계시는 지 분명해지겠지요.

purplerain1의 이미지

빌드 자체는 잘 되는데

include <> 에 있는 파일명을 마우스 오른쪽 클릭하고 문서 열기를 했을 때

그 파일이 현재 소스 파일의 디렉터리 또는 빌드 시스템 경로에 없다

고 뜨는데, 사실 그 메세지 아래에 뜬 현재 소스 파일 경로에 문서열기를 하려는 파일이 들어는 상태라.

왜 저런 오류 메세지가 뜨는지 매우 궁금한 거지요 ㅠ

shint의 이미지

드라이브 전체 경로
c:\test\lib

상대경로 지정이 헛갈릴 수 있습니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

purplerain1의 이미지

절대 경로로 넣어 봤는데도 여전히 문서 열기가 안되네요ㅠㅠ

그런데 검색하다 보니 아래 와 같은 글을 발겼했습니다.

https://developercommunity.visualstudio.com/content/problem/10534/cant-open-document-from-include-directive.html

아무래도 제 문제가 이거랑 비슷한 거 같은데 vs 최신판에선 해결되었다고 달려있네요 ㅠㅠ

회사에서 2008을 쓰는지라;;;;;

시간 내어 주신 모든 분들께 정말 감사드립니다.

shint의 이미지

- MFC 의 경우. 중복되는 변수 선언은 stdafx.h 에 넣으셔야 합니다.

- 작은 테스트 프로젝트.를 하나 별도로. 만들어서 해보세요. 될겁니다.

- 잘 되는. 책 예제 소스를 사용하는 방법도 있습니다.

- 다른 버전에 컴파일러를 사용하는 방법

- 다른 컴퓨터에서 확인하는 방법

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.