강의 정리/인프런
[인프런] 동적 라이브러리 개발
program-yam
2025. 3. 10. 18:56
- 최종 바이너리는 .dll 파일이다.
- .c, .h, lib, .dll 네 가지 파일로 구성된다.
- .h는 컴파일 타임에 사용된다.
- .lib는 링크 타임에 사용된다.
- .dll은 런 타임에 사용된다.
- 런타임 라이브러리를 로딩하는 방식은 2가지로 나뉜다.
- 묵시적 방법
- 명시적 방법
- 런타임 라이브러리를 로딩하는 방식은 2가지로 나뉜다.
📌 Visual Studio에서 동적 라이브러리 개발
#include <stdio.h>
int add_in_dll(int a, int b)
{
puts("add_in_dll v1.0");
return a + b;
}
위 그림처럼 동적 라이브러리를 만들기 위해 구성 형식을 변경한다.
동적 라이브러리를 링킹 하는 주체는 운영체제인데, 프로세스를 로딩할 때 한다.
따라서 운영체제에게 알려주는 코드가 추가로 들어가야한다.
__declspec(dllexport) int add_in_dll(int a, int b);
위 명령어를 통해 add_in_dll을 외부에 공개함으로써 사용할 수 있게 한다.
사용해보기 위해 프로젝트 하나를 더 만들자
정적 라이브러리와 마찬가지로 링크 에러가 난다.
동적 라이브러리를 사용하려면 다음과 같이 코드를 입력한다.
__declspec(dllimport) int add_in_dll(int a, int b);
이렇게 입력하고 빌드하면 링크에러가 또 나는데, 경로를 지정안해줘서 그렇다.
위 그림처럼 pragma comment를 사용해 경로를 지정해주면 링크에러가 잡히고 동적 라이브러리를 사용할 수 있다.