엔진프로그래밍

[lib,dll] 외부 라이브러리(Assimp)이용 시 lib와 dll개념

doyyy_0 2025. 9. 5. 18:30

Assimp를 사용할 때 vcpkg를 사용하지 않고, 소스를 CMake로 받아서 사용해봤다. Assimp.sln이 있는데, 이걸 Visual Studio에서 빌드 솔루션 하면 포함된 헤더와 cpp 파일들을 잘 엮어서 libdll 파일을 생성한다. 여기서 생성된 lib와 dll 파일을 내 엔진에 넣어 사용해야 한다. lib 파일은 내 엔진 소스코드가 있는 폴더(헤더와 cpp 등)에 넣으면 되고, dll 파일은 exe 파일이 있는 위치에 넣으면 된다. dll파일을 엔진 소스코드가 들어있는 폴더에 넣을 필요가 없는것은, dll은 완성된 실행파일에서 가져다가 사용하는 개념이기 때문이다.

 

둘의 개념을 잘 구분하는게 도움이 되니 다음과 같이 정리하였다.

 

1) lib(Library,*lib)

빌드 시점에 링커가 lib 안의 코드 중 실제 사용된 부분만 exe에 포함

즉, exe를 만들 때 lib 안의 함수 코드가 연결되어 exe에 들어가게 된다

 

2) dll(Dynamic Linking Library)

실제 기계어로 번역된 코드가 들어 있음

exe는 dll의 심볼을 참조하고, 실행 시 dll에 연결되어 실제 코드가 실행됨

따라서 exe를 실행할 때는 dll이 반드시 필요

 

즉, lib는 빌드 시 코드 연결용, dll은 실행 시 코드 제공용이라는 개념이다.

 

Assimp를 사용할때 헤더파일을

#include <assimp/Importer.hpp>
#include <assimp/postprocess.h>
#include <assimp/scene.h>

 

이렇게 사용하는데 이건 assimp다운하고 include라는 경로를 다음과 같이 추가해줘야한다.

 

 

그리고 Library Directory에 lib가 있는곳 경로를 추가하고, Linker->Input에 그 lib를 넣는방법도 있지만, 그냥 lib파일을 내 엔진폴더에 넣고,

#pragma comment(lib, "assimp-vc143-mtd.lib")

이렇게 하는게 유지보수도 좋고, 가독성도 좋고, 더 편리하다.

 

lib와 dll의 명확한 개념은 김성엽님 블로그를 참고하면 좋다.

https://m.blog.naver.com/tipsware/221359282016

 

Cmake와 linking하는 방법은 learnOpengl이 자세히 설명해준다.

https://learnopengl.com/Getting-started/Creating-a-window