• 최종 바이너리는 .dll 파일이다.
  • .c, .h, lib, .dll 네 가지 파일로 구성된다.
    • .h는 컴파일 타임에 사용된다.
    • .lib는 링크 타임에 사용된다.
    • .dll은 런 타임에 사용된다.
      • 런타임 라이브러리를 로딩하는 방식은 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를 사용해 경로를 지정해주면 링크에러가 잡히고 동적 라이브러리를 사용할 수 있다.

+ Recent posts