본문 바로가기
C++/공부

[C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(2) PreCompiledHeader, DLL 헤더파일 추가와 매크로

by 왹져박사 2025. 1. 17.

2025.01.17 - [C++/공부] - [C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(1) 엔진 속성 설정

 

[C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(1) 엔진 속성 설정

수업시간에 강사님과 같이 진행했지만, 이해하고 구현했다기보다, 그냥 흘러가는 대로 코드를 쳤다...라는 것에 가까웠다. UnrealEngine 기능을 참고하여 기능을 구현하였기 때문에,일부분에 불과

narmhye.tistory.com

이어서!

 

 

1. PreCompiledHeader

 

프로젝트의 컴파일 시간을 단축하기 위하여 미리 컴파일된 헤더파일을 사용한다. 

수정이 거의 없어 안정적이며 사용 빈도가 높은 헤더파일을 포함시킨다. 

 

https://learn.microsoft.com/ko-kr/cpp/build/creating-precompiled-header-files?view=msvc-170

 

미리 컴파일된 헤더 파일

자세한 정보: 미리 컴파일된 헤더 파일

learn.microsoft.com

 

 

대부분의 상황에 사용하게 되는 Window.h와 iostream을 추가하였다. 

 

PreCompiledHeader.h

#pragma once

#include <Windows.h>
#include <iostream>

 

PreCompiledHeader.cpp

#include "PreCompiledHeader.h"

 

main에도 include 해준다. 

 

폴더에 넣었다면, 추가 포함 디렉터리에도 추가해 준다. 



빌드 시, '경로~(ProjectName).pcy 파일을 찾을 수 없습니다' 오류가 뜬다면, 

프로젝트 생성 시에 미리 컴파일된 헤더파일 사용 옵션을 '사용(Yu)'으로 안 한 것이다. 

다음 옵션을 '만들기(/Yc)'로 설정하면 해결된다. 

 

 

2. DLL에 헤더파일 추가, 매크로

 

Core.h를 추가했다. Core.h의 역할은, 실행 프로젝트에서 사용할 필요가 없는 PreCompiledHeader.h와는 달리

실제 실행 프로젝트에서 필요한 부분을 구현한다. 

 

.dll 파일에 .h 파일을 추가하면  DLL을 내보내기 할 것인지, 가져올 것인지 구분해줘야 한다. 

이를 매크로로 구현하여 프로젝트 속성에 전처리기가 정의되었다면 내보내기, 없다면 가져오기 하는 기능을 만든다. 

 

ENGINE_EXPORTS로 전처리기를 정의를 추가하였다. 

이는 실행 프로젝트가 아닌 동적 라이브러리에만 추가해야 한다. 

 

 

ENGINE_EXPORTS 전처리기 정의가 추가되어 있다면 ENGINE_API 정의를 DLL 내보내기로 선언하고, 

ENGINE_EXPORTS 전처리기 정의가 추가되어있지 않다면 ENGINE_API 정의를 DLL 가져오기로 선언한다. 

#pragma once

#ifdef ENGINE_EXPORTS	//ENGINE_EXPORTS 전처리기 정의가 추가되어있다면 ENGINE_API 정의를 DLL 내보내기로 선언
#define ENGINE_API __declspec( dllexport )
#else	//ENGINE_EXPORTS 전처리기 정의가 추가되어있지 않다면 ENGINE_API 정의를 DLL 가져오기로 선언
#define ENGINE_API __declspec( dllimport )
#endif

 

 

https://learn.microsoft.com/ko-kr/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=msvc-170

 

연습: 고유한 동적 링크 라이브러리 만들기 및 사용(C++)

C++를 사용하여 Visual Studio에서 Windows DLL(동적 연결 라이브러리)을 만듭니다.

learn.microsoft.com

 

https://learn.microsoft.com/ko-kr/cpp/cpp/dllexport-dllimport?view=msvc-170

 

dllexport, dllimport

자세한 정보: dllexport, dllimport

learn.microsoft.com

 

 

 

 

 

 

 

다음 글!

2025.01.17 - [C++/공부] - [C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(3) Key 입력 정의 가져오기, 메모리 누수 검사 기능 추가

 

[C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(3) Key 입력 정의 가져오기, 메모리 누수 검사

2025.01.17 - [C++/공부] - [C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(2) PreCompiledHeader, DLL 헤더파일 추가와 매크로 [C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(2) PreCompiledHeader, DLL 헤더

narmhye.tistory.com