자습

220714_1_기본 틀 작업 2

2022. 8. 20. 23:01

공용 헤더폴더 자동으로 포함시키기

  • 지난 시간에 빌드 후에 자동으로 프로그램을 복사해주는 기능까지 구현했었다.
  • 이제 이 자동 복사된 파일들을 다른 프로젝트에서 자동으로 포함(include) 시키는 기능을 구현해야 하는데, 비주얼 스튜디오에 이 기능이 이미 있다.
  • Client2D 프로젝트에서 자동으로 AR41Engine 프로젝트의 라이브러리 파일과 헤더 파일이 포함되도록 설정해 준다.

> 포함 디렉터리 지정

→ 이 기능을 사용할 프로젝트→속성→VC++ 디렉터리로 들어가서 ‘포함 디렉터리’에 프로젝트에서 공용 헤더파일을 옮겨놓는 폴더인 ../../Engine/Include/ 폴더를 지정해 준다.

** 프로젝트 파일(.vcsproj) 파일이 있는 디렉터리를 기준으로 한 상대 경로로 지정해주면 된다.


> 라이브러리 디렉터리(.lib)파일

→ 마찬가지로 .lib 파일이 있는 폴더인 ../Bin/ 폴더를 포함시킨다.


> main.cpp 함수에서 포함시키기

  • Debug와 Release 모드에서 다른 라이브러리가 링크되도록 설정해 준다.
#include "Engine.h"
#include "resource.h"

#ifdef _DEBUG

#pragma comment(lib, "AR41Engine_Debug.lib")

#else

#pragma comment(lib, "AR41Engine.lib")

#endif // _DEBUG


> 이 작업을, Client2D 프로젝트와 Editor 프로젝트 두 프로젝트에서 해 준다.

  • 이제 Client2D 프로젝트에서 CEngine 클래스를 사용할 수 있게 되었다.

Client2D main.cpp 설정

코드 전문

#include "Engine.h"
#include "resource.h"

#ifdef _DEBUG

#pragma comment(lib, "AR41Engine_Debug.lib")

#else

#pragma comment(lib, "AR41Engine.lib")

#endif // _DEBUG


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPWSTR    lpCmdLine,
    _In_ int       nCmdShow)
{
    if (!CEngine::GetInst()->Init(hInstance, TEXT("Client2D"), TEXT("Client2D"), IDI_ICON1,
        IDI_ICON1, 1280, 720, 1280, 720, true))
    {
        CEngine::DestroyInst();
        return 0;
    }

    int Ret = CEngine::GetInst()->Run();

    CEngine::DestroyInst();

    return Ret;
}

> CEngine 초기화

  • 창 이름은 “Client2D”로 설정한다.
  • 아이콘에 쓰일 리소스는 직접 추가해주어야 한다.

    • 이렇게 해주면 resources.h 헤더가 생성되고, 이 헤더를 포함시켜준 뒤
    #define IDI_ICON1                       101

    → 이 매크로를 매개변수로 주면 된다.

  • 해상도는 일단 HD 해상도, 창모드로 설정해 준다.

  • 초기화 실패 시 도로 제거하고 return

> 코드

if (!CEngine::GetInst()->Init(hInstance, TEXT("Client2D"), TEXT("Client2D"), IDI_ICON1,
        IDI_ICON1, 1280, 720, 1280, 720, true))
    {
        CEngine::DestroyInst();
        return 0;
    }


> 실행

int Ret = CEngine::GetInst()->Run(); //루프 반복

CEngine::DestroyInst(); //루프 종료 시 메모리 할당 해제 후 return

return Ret;


CEngine의 생성자에서 메모리 릭 체크 설정

CEngine::CEngine()	:
	m_hInst(0),
	m_hWnd(0),
    m_WindowRS{}
{
    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
    //_CrtSetBreakAlloc(100);
}

> 벡터의 내적, 외적, 행렬, 제1코사인법칙, 제2코사인법칙 등 이론 공부


Uploaded by N2T

'자습' 카테고리의 다른 글

제목토글 테스트  (0) 2022.08.20
220714_2_DX Device Initialize 1  (0) 2022.08.20
220713_기본 틀 작업, .bat파일 자동화  (0) 2022.08.20
12345678  (0) 2022.08.20
TIPS  (0) 2022.08.20
'자습' 카테고리의 다른 글
  • 제목토글 테스트
  • 220714_2_DX Device Initialize 1
  • 220713_기본 틀 작업, .bat파일 자동화
  • 12345678
hyrule
hyrule
hyrule
C++ 프로그래밍 공부
hyrule
전체
오늘
어제
  • 분류 전체보기 (205)
    • C++기초 (50)
    • WIN32API FrameWork (109)
      • 한단계씩 직접 구현 (82)
      • 원본 (15)
      • 코드별 설명 개별저장(검색용) (12)
    • 자습 (21)
    • C++ TIPS (11)
    • 연습 노트 (3)
    • ETC (6)
    • DX2D StarCraft 모작 (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 스타크래프트
  • Tistory
  • notion
  • C++
  • hello
  • Windows 11

최근 댓글

최근 글

hELLO · Designed By 정상우.
hyrule
220714_1_기본 틀 작업 2
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.