728x90
라이브러리를 링크하지 않고 헤더 파일(.h)만 #include 하여도 실행이 되는 경우는 몇 가지가 있습니다:
- 헤더 전용 라이브러리 (Header-Only Libraries): 일부 라이브러리는 "헤더 전용" 형태로 제공됩니다. 이러한 라이브러리는 모든 구현이 헤더 파일 내에 포함되어 있으므로 별도의 링킹이 필요하지 않습니다. 예를 들어, 많은 템플릿 기반 라이브러리들이 이 방식을 사용합니다.
- Inline 함수나 템플릿: 헤더 파일 내에 inline 함수나 템플릿 함수가 정의되어 있을 경우, 이들은 각 소스 파일에 직접 포함되어 컴파일됩니다. 이 경우 별도의 링킹이 필요하지 않습니다.
- 정적 라이브러리의 자동 링킹: 일부 정적 라이브러리는 헤더 파일 내에서 특정 지시문을 사용하여 컴파일러에게 자동으로 라이브러리를 링크하도록 지시할 수 있습니다. Visual Studio에서는 #pragma comment(lib, "libraryname.lib") 지시문을 사용하여 이를 수행할 수 있습니다.
- 프로젝트 설정에 이미 포함된 라이브러리: 프로젝트 설정이나 개발 환경에서 이미 특정 라이브러리가 링크되도록 설정되어 있을 수 있습니다. 예를 들어, 개발 환경의 전역 설정이나 빌드 스크립트에서 라이브러리를 링크하도록 구성했을 수 있습니다.
- 표준 라이브러리나 시스템 라이브러리: 표준 C++ 라이브러리나 시스템 라이브러리의 경우, 컴파일러나 개발 환경에 기본적으로 포함되어 있으므로 별도의 링킹이 필요하지 않습니다.
- 동적 로딩: 동적 라이브러리(.dll, .so 등)의 경우, 프로그램이 실행 중에 명시적으로 라이브러리를 로드하고 함수를 찾아 사용할 수 있습니다. 이 경우 컴파일 타임에 링킹이 필요하지 않습니다.
헤더 파일만 #include하여도 프로그램이 정상적으로 실행되는 경우는 주로 이러한 이유들 중 하나에 해당합니다.
728x90
'Unreal > C++ 서버' 카테고리의 다른 글
.h 파일과 .lib 차이, .h는 있고, .cpp는 없는데 include 가능한 이유 (0) | 2024.04.06 |
---|---|
CMD에서 MYSQL DB 명령어 (0) | 2024.03.31 |
Debug 모드, Release 모드 특징 (0) | 2024.03.24 |
C++를 사용하여 Database for MySQL (1) | 2024.03.23 |
MYSQL 설치 후 진행과정 (0) | 2024.03.17 |