묻공러
[DirectX Note] 애플리케이션 생성과 정적 라이브러리 추가
묻공러
묻지마공부
묻공러
전체
오늘
어제
  • 분류 전체보기 (533) N
    • C (54)
      • [코드조선] C 핵심 (35)
      • [언어본색] C 기초 (19)
    • C++ (72)
      • [루키스] C++ (9)
      • [루키스] 콜백함수 (6)
      • [루키스] STL (8)
      • [루키스] Modern C++ (11)
      • [노코프] C++ (10)
      • [노코프] Tips (16)
      • [일지] C++ (12)
    • C# (20)
      • [루키스] C# (9)
      • [루키스] 자료구조 (3)
      • [루키스] 실전 문법 (8)
    • 자료구조 & 알고리즘 (50)
      • [코드조선] C 자료구조 & 알고리즘 (6)
      • [합격자되기] C++ 코딩테스트 (12)
      • [루키스] C++ 자료구조 & 알고리즘 (32)
    • CS (69)
      • [널널한 개발자] CS 개론 (19)
      • [혼자 공부하는] 컴퓨터 구조 (16)
      • [혼자 공부하는] 운영체제 (18)
      • [널널한 개발자] 네트워크 (16)
    • 게임 그래픽스 (46)
      • [전북대] OpenGL (25)
      • [일지] DirectX (21)
    • 게임 엔진 - 언리얼 (123)
      • [코드조선] 언리얼 (53)
      • [코드조선] 언리얼 데디서버 (8)
      • [일지] 언리얼 (59)
      • [일지] 언리얼 (2) (3)
    • 게임 엔진 - 유니티 (26) N
      • [최적화] 유니티 (4)
      • [루키스] 유니티 (22) N
    • 게임 서버 (17)
    • 게임 수학 & 물리 (19)
      • 게임 수학 (12)
      • 게임 물리 (7)
    • GIT & GITHUB (4)
    • 영어 (18)
      • [The Outfit] 대본 공부 (11)
      • the others (7)
    • 그 외 (14)
      • In (5)
      • Out (5)
      • Review (4)

인기 글

최근 글

hELLO · Designed By 정상우.
게임 그래픽스/[일지] DirectX

[DirectX Note] 애플리케이션 생성과 정적 라이브러리 추가

2023. 5. 17. 22:31

데스크톱 애플리케이션 생성

비주얼 스튜디오를 켜고 Windows 데스크톱 마법사로 만든다
추가 설정은 데스크톱 애플리케이션으로 한다

정적 라이브러리 추가하는 방법
새 프로젝트 추가 > 정적 라이브러리

 

라이브러리?

자주 사용되는 기능이나 함수 서브루틴 등 총제적으로 구현해 놓은 프로젝트

 

라이브러리의 종류와 장단점
- 동적 라이브러리
xxxx.dll
프로그램 시작하고 있는 동안에 해당 라이브러리를 참조하여 실행한다
하나의 메모리 영역에 올려두고 여러 프로그램들이 나누어 사용하는 라이브러리

장점
메모리 절약
프로그램 한번 올려진 메모리를 공유, 사용하니 사용 공간자체가 적다
업그레이드(패치)를 비교적 정적 라이브러리보다 쉽게 진행 가능하다
실행 중간에 패치가 가능

단점
외부의존도가 높아진다
(게임 포토샵 둘다 같은 그래픽스 API로 실행된다는 가정하에,

하나의 라이브러리로 같이 동적으로 사용하니 하나만 크래시가 나더라도 다 같이 크래시 날 수도 있음)
공유 라이브러리를 메모리 올리려면 찾고 검색하는데 시간이 걸리므로
성능저하가 발생한다

- 정적 라이브러리

xxxx.lib
프로그램 컴파일하는 과정에 내가 작성한 라이브러리 코드들이
포함된다

장점
한번 완성되면 안정적으로 프로그램 사용 가능하다
컴파일 시 필요한 라이브러리를 프로그램 내에 적재하기 때문에
앱을 안정적으로 활용할 수 있게 된다
런타임시 외부 참조할 필요가 없기에 속도에서 장점이 있다

단점
라이브러리 변경이 필요할 시 변경된 라이브러리를 재배포하면 안 되고
모든 프로그램을 처음부터 다시 빌드하여
새로운 버전으로 배포를 진행해줘야 한다

라이브러리 코드가 바뀌면 다시 빌드, 회사에서는 다시 배포를 해줘야 한다

 

추가적으로,
opengl은 버전 나올때마다 계속 라이브러리를 깔아야 하는데
dx는 pc에 알아서 깔려짐

 

동적 라이브러리에 대한 추가설명으로
게임과 포토샵에서 둘 다 opengl 라이브러리가 포함되어 있으면
굳이 둘다 돌릴필요가 없기에
하나로만 쓰고 상황에 따라 동적으로 작동하는 방식을 의미한다

자주 패치를 하거나 서버의 경우는 동적으로 쓰는 게 좋다


lib는 링크(linking) 시 필요하고 dll은 프로그램 실행 시 필요하다

동적라이브러리는 dll만 바꿔주면 되는데
정적라이브러리는 lib와 함께 통째로 바꿔줘야 한다

 


정적 라이브러리 프로젝트를 연결하는 방법
모든 구성, 모든 플랫폼으로 설정하기
미리 컴파일된 헤더도 제거하기

정적라이브러리 프로젝트는 실행하면 lib가 생성된다

정적라이브러리를 추가하는 방법
1. 소스코드로 추가하는 방식
2. 비주얼 스튜디오 속성 > 디렉터리에서

 

1번 방식으로 정적 라이브러리 추가는 아래와 같이 한다

#ifdef _DEBUG
#pragma comment(lib, "..\\x64\\Debug\\Engine_Source.lib")
#else
#pragma comment(lib, "..\\x64\\Release\\Engine_Source.lib")
#endif

 


정적 라이브러리 프로젝트 내부의 헤더파일을 Main 프로젝에 추가하는 방법
라이브러리 내부에 내가 만든 헤더를 아래처럼 직접 경로로 추가하면 불편하다

#include "..\\Engine_Source\CommonInclude.h"

그래서 참조 추가와 프로젝트 속성에서 C/C++ > 일반 > 추가 포함 디렉터리에 해당 경로를 설정한 후

아래처럼 사용하면 된다

#include "CommonInclude.h"

 

 

셰이더 코드를 프로젝트에 연결하는 방법
셰이더 코드라는 것도 필요하다

ex.
dx hlsl
opengl glsl
vulkan hlsl glsl

새 프로젝트 > 공유 항목 프로젝트로 설정한다

저작자표시 비영리 변경금지 (새창열림)

'게임 그래픽스 > [일지] DirectX' 카테고리의 다른 글

2023.05.16  (0) 2024.11.22
2023.05.15  (0) 2024.11.22
[DirectX Note] 랜더링 파이프라인 (2)  (0) 2023.05.22
[DirectX Note] 랜더링 파이프라인 (1)  (0) 2023.05.17
[DirectX Note] 그래픽스 공부 이유  (0) 2023.05.17
'게임 그래픽스/[일지] DirectX' 카테고리의 다른 글
  • 2023.05.15
  • [DirectX Note] 랜더링 파이프라인 (2)
  • [DirectX Note] 랜더링 파이프라인 (1)
  • [DirectX Note] 그래픽스 공부 이유
묻공러
묻공러
상단으로

티스토리툴바

개인정보

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

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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