C run-time
library |
Associated DLL |
Characteristics |
Option |
Preprocessor
directives |
libcmt.lib |
None, static
link. |
Multithreaded,
static link |
_MT |
|
msvcrt.lib |
msvcr80.dll |
Multithreaded,
dynamic link (import library for MSVCR80.DLL). Be aware that if you use the
Standard C++ Library, your program will need MSVCP80.DLL to run. |
_MT, _DLL |
|
libcmtd.lib |
None, static link |
Multithreaded,
static link (debug) |
/MTd |
_DEBUG, _MT |
msvcrtd.lib |
msvcr80d.dll |
Multithreaded,
dynamic link (import library for MSVCR80D.DLL) (debug). |
/MDd |
_DEBUG, _MT, _DLL |
msvcmrt.lib |
msvcm80.dll |
C Runtime import
library. Used for mixed managed/native code. |
/clr |
|
msvcurt.lib |
msvcm80.dll |
C Runtime import
library compiled as 100% pure MSIL code. All code complies with the ECMA URT
spec for MSIL. |
/clr:pure |
|
헌데 재미 있는 것은 Visual C++는 추가적으로 헤더의 선언 유무에 따라 Standard C++ library도 링크한다는 것이다. 자, 여기서 조금 헷갈리는데 위의 테이블은 분명 Visual C++의 프로젝트 옵션의 컴파일 설정에 따라 링크하는 라이브러리가 결정되었다. 헌데 아래 테이블에 나오는 라이브러리는 단순히 프로젝트 옵션의 컴파일 설정에 의해 결정되는 것이 아니라 Standard C++ library header가 프로그램에 포함되었는지를 보고 링크가 이루어 진다.
Standard C++
Library |
Characteristics |
Option |
Preprocessor
directives |
LIBCPMT.LIB |
Multithreaded,
static link |
/MT |
_MT |
MSVCPRT.LIB |
Multithreaded,
dynamic link (import library for MSVCP80.dll) |
/MD |
_MT, _DLL |
LIBCPMTD.LIB |
Multithreaded,
static link |
/MTd |
_DEBUG, _MT |
MSVCPRTD.LIB |
Multithreaded,
dynamic link (import library for MSVCP80D.DLL) |
/MDd |
_DEBUG, _MT, _DLL |
바로 요 아래에 있는 것이 Standard C++ library header 파일들의 목록이다. 바로 요놈들중에 한놈이라도 프로그램에 선언되어 사용되는 놈이 있다면 위의 테이블에 나온놈들중에서 현재 프로젝트의 컴파일 옵션에 따라 적당한 라이브러리가 추가로 링크가된다.
|
In addition, the
following C++ wrappers are documented:
그렇다면 만약 ctime 부분을 포함시키면 어떻게 될까? ctime은 Standard C++ library header 중의 하나이기 때문에 현재 컴파일 설정인 /MDd에 해당하는 라이브러리인 MSVCPRTD.lib가 포함될까? 정답은 아래 그림속에...
앞서본 그림과 달리 아래 부분에 msvcprtd.lib가 포함되어 있다! 호~이!