2014-07-18 2 views
0

.cpp 파일에 여러 기능이 있으며 여러 프로젝트에서 동일한 파일을 사용합니다. 그래서 다른 디렉토리에 복사하는 대신 (원본 위치에서) Visual Studio의 프로젝트 파일에 추가하고 사용하십시오."stdafx.h"를 포함하는 동일한 .cpp 파일 및 헤더를 사용하는 두 프로젝트

문제는 #include "stdafx.h"는 파일과 동일한 디렉토리를 나타내는 것으로 보이며 이로 인해 컴파일러 문제가 발생합니다.

방법이나 해결 방법이 있습니까? 개념적으로 잘못된 것을하고 있습니까?

(내가 정적 라이브러리로 만들 생각은 약간의 과잉이다. 흠. 올바른 DEBUG/RELEASE의 lib 디렉토리를 사용하여 컴파일하고 새 프로젝트를 구축하고 있는지 다른 사람을. 게으른 코더에 대한 약간 하드!)

+0

해당 파일만으로 정적 라이브러리 프로젝트를 생성하십시오. 다른 모든 프로젝트는 소스 파일을 직접 언급하는 것이 아니라 라이브러리에 의존하게하십시오. –

+0

이 파일에 프리 컴파일 된 헤더를 사용할 필요가 없다면'#include "stdafx.h"'를 제거하십시오. 그런 다음 솔루션 탐색기에서 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 C/C++ 옵션 페이지의 어딘가에 미리 컴파일 된 헤더를 비활성화하는 옵션이 있습니다. 또한 전체 프로젝트에서 스위치를 끌 수도 있습니다. – Praetorian

답변

1

".cpp"파일을 라이브러리 (.DLL)에 포함시켜야한다고 생각합니다. 그런 다음 해당 라이브러리 (.LIB)와 라이브러리 (.H)를 라이브러리를 사용하는 프로젝트에 내보내는 라이브러리의 헤더 파일을 포함시켜 프로젝트 파일에 정적으로로드 할 수 있습니다. 그렇게하면 정적으로 (.LLL) 파일을 사용하여 메모리에 .DLL을로드하고 라이브러리를 만들 때 만들 파일 (.H)을 통해 함수를 사용할 수 있습니다.

나는 이것이 분명하지 않다는 것을 알고 있습니다. 특히 과거에 그렇게하지 않았다면 더욱 그렇습니다. 원하는 경우 프로젝트 파일을 일부 위치에 업로드하고 링크를 제공 할 수 있습니다. 그리고 내가해야 할 일에 대해 더 잘 설명 할 수 있습니다.

+0

나는 그것이 조금 과잉이라고 생각한다. cpp 파일의 모든 변경 사항과 함께 새 프로젝트를 만들어 컴파일해야하며 다른 프로젝트가 최신 .lib 파일 (또는 .dll)을 사용하는지 확인해야합니다. 귀하의 솔루션은 효과가 있지만 더 쉬운 솔루션을 원합니다. D –

+0

일반적으로 헤더 파일을 포함시켜 다른 프로젝트의 .cpp 파일에 링크하는 것은 좋지 않습니다. 왜 여러 프로젝트가 있습니까? 어떤 특별한 이유? 하나의 프로젝트에서 모든 것을 할 수는 없습니까? – armanali

+0

다른 소스 파일에서 동일한 헤더 파일을 사용하는 경우 stdafx.h는 좋은 자리 표시 자입니다. 따라서 헤더 파일을 모든 소스 파일에 포함하는 대신 "stdafx.h"에 헤더 파일을 포함시키고 소스 파일에 "stdafx.h"를 포함시킵니다. 따라서 소스 파일에서 std :: string을 사용하는 경우 모든 .cpp 파일에 #include 을 쓸 필요가 없습니다. 대신 stdafx.h에 #include 을 넣고 소스 파일에 #include "stdafx.h"를 넣으십시오. – armanali