본문으로 바로가기

static library

- 실제 라이브러리가 링킹타임에 하나의 실행파일로 컴파일된다.

- 프로그램 실행시에 코드가 같은 메모리를 사용한다.

- CRT(C Run-Time lib)를 공유한다. (다르면 컴파일이 안됨)

- new alloc 실행시 실행파일과 같은 heap manager를 사용한다. (윗줄의 결과)

 

dll( dynamic linki ng li brary)

- 라이브러리가 별도의 실행파일로 구성되어 있다.

- 프로그램 실행시에 별도의 엔트리 포인트가 포함되어 있다.( DllMain() )

- CRT(C Run-Time lib)가 서로 별개로 구성된다.

- new alloc 이 서로 다른 heap manager를 사용한다. (윗줄의 결과)

 

static_lib dll을 동시에 지원하는 library를 만들때 주의 할점

- new/delete alloc/free가 반드시 실행파일혹은 라이브러리 한쪽에서 실행되도록 디자인해야한다. static lib

로만 만들생각이라도 이거는 지켜주는게 좋다.

- memory leak detector같은 걸 위해 ::operator new/delete가 구현되어 있으면 CRT종류에 따라 링킹시에 직접

사용자 라이브러리->MFC라이브러리(만약쓴다면)->CRT 순으로 지정해줘야한다.