# 라이브러리에 대해서 2419 허가온 ## 정적 라이브러리 link단계에서 라이브러리파일을 실행 바이너리에 포함시킨다는 이야기이다. 따라서 별도의 추가 작업없이 단독적으로 사용할 수 있다. 하지만 실행파일 크기가 커지며 메인 메모리의 공간 활용이 떨어진다. ## 동적 라이브러리 동적으로 링크하여 사용하는 라이브러리이다. 실행 바이너리에서 필요시 사용할 수 있도록 최소한의 정보만 포함하여 링크하거나 독립적 dll을 사용할수도있다. ## __declspec(dllimport) export한 함수를 응용프로그램에서 사용하기 위해서 사용해야한다. ## __declspec(dllexport) dll에서 함수, 변수, 클래스를 export하기위해 사용한다. dll의 인터페이스를 정의하는 DEF(module definition file)을 포함시킬필요 없다. ## extern c A회사 컴파일러를 이용하여 DllA 을 만들었다면 B회사에서 DllA을 사용할려고 한다면 함수의 주소를 얻지 못해 사용하지 못하는 문제가 발생한다. 이 문제를 해결하기 위해 extern "C" 라는 코드를 사용하여 이름 데코레이션을 사용 하지 않고 똑같은 이름으로 함수를 익스포트 시키는데 이게 c++ Name decoration이 아닌 c언어 형태의 Name decoration룰을 따라 함수의 이름을 생성하게 된다.