2016-09-20 7 views
0

:) 크게 감사하겠습니다..exe 파일에 C++ (.cpp) 컴파일

.cpp 파일을 .exe로 변환하려고합니다.

(MingW) gcc 및 g ++로 시도했습니다. 또한 Visual Studio에서 수동으로 컴파일하려고했습니다. 미리 컴파일 된 헤더가 위치 할 수 없기 때문에

은 불행하게도 이러한 (Linux 및 Windows에서 모두) 컴파일 실패 : 및 #include <stdafx.h>을 변경

stdafx.h: No such file or directory 

내가 수동으로 (#INCLUDE 미리 컴파일 된 헤더)를 다운로드하려고했습니다 수동으로 다운로드 한 프리 헤더의 현재 폴더를 가리 키도록 #include "stdafx.h". 이것은 '작동하지만'헤더의 잘못된 버전이기 때문에 아마도 많은 양의 오류로 컴파일됩니다 (헤더가있는 곳만 찾을 수 있습니다)

더 간단한 방법이 있어야합니까?

+4

사전 컴파일 된 헤더를 미리 컴파일 된 헤더 파일을 생성하기 위해 선택한 경우 비주얼 스튜디오의 /FI 컴파일러 스위치는'비주얼 스튜디오 것입니다. Visual Studio에서 프로젝트를 적절히 생성하면''stdafx.h "헤더 파일을 포함하여 필요한 모든 파일이 생성됩니다. –

+1

'#include "stdafx.h 지시어 만 제거하면된다. 너는 그것을 필요로하지 않는다. 순전히 최적화입니다. –

+1

^코드를 이식성있게 유지하려면'#include '문에서'#ifdef WINVER'를 사용하십시오. –

답변

1

아마도 stdafx.h이 필요한 프로젝트 템플릿을 사용했을 것입니다.

해결하려면 cpp 파일에서 #include "stdafx.h"을 제거 할 수 있습니다.

대신 VS 템플릿을 사용하여 새 프로젝트를 만들 때 Precompiled header 옵션을 해제하십시오. 예를 들어, Win32 Console Application 템플릿 :

enter image description here

enter image description here

+1

질문에 의문을 가지지 않을까 걱정됩니다. OP는 매우 불분명합니다. –

+0

프로젝트 템플릿과 미리 컴파일 된 헤더 간에는 연결이 없습니다 (** 모든 ** 프로젝트 유형에 대해 사전 컴파일 된 헤더 사용을 활성화/비활성화 할 수 있음 제외). 이 점에서 Win32 콘솔 프로젝트에는 특별한 것이 없습니다. – IInspectable

+0

여전히 가짜입니다. 템플릿 없음 * 미리 컴파일 된 헤더를 사용해야합니다. 모든 템플릿 **은 미리 컴파일 된 헤더를 ** 사용할 수 있습니다. 미리 컴파일 된 헤더 **는 표준 * Win32 콘솔 응용 프로그램 * 템플릿 (Visual Studio 2015)을 사용하여 콘솔 응용 프로그램에 기본적으로 ** 사용할 수 있습니다. 당신이 이것에 대해 매우 편안하다고 느끼지 않습니다. – IInspectable

1

에 stdafx.hprecompiled header files에 사용되는 기본 파일 이름입니다. 이것은 Visual Studio 전용 최적화로, 컴파일 속도를 높이기 위해 거의 변경되지 않는 헤더 파일을 바이너리 표현으로 컴파일합니다.

미리 컴파일 된 헤더 파일 중 하나는 각 컴파일 단위의 첫 번째 비 주석/비 공백 행에 create the precompiled header file에 사용 된 헤더를 포함시켜야한다는 것입니다. 이것은 실용적이지 않을 수 있기 때문에 (예 : 소스 형식의 타사 라이브러리를 사용할 때) 컴파일러는 헤더 파일을 포함 할 수 있습니다. /FI (Name Forced Include File) 컴파일러 스위치가 바로 그 기능을 수행합니다.

본질적으로, 문제에 대한 해결책은 다음과 같습니다

  1. 사방 #include <stdafx.h> 지시어를 제거합니다.
  2. [선택 사항] Visual Studio 프로젝트에서 미리 컴파일 된 헤더 파일을 만들 수 있습니다.
  3. 사용 단계에서` "에 stdafx.h"를 사용하여 2