ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로젝트세팅에서 multithreaded 혹은 multithreaded dll
    프로그래밍/프로그래밍 관련 2011. 4. 21. 18:33

    multithreaded로 컴파일되는 것을 multithreaded dll 로 바꾸어도 컴파일이나 링크 모두 잘됩니다.

     

    multithreaded dll을 multithreaded 로 바꾸면 에러가 나는경우가 생기는데...

    fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds

    _AFXDLL 을 정의해놓고 세팅은 왜 이따위로 했는냐 이런 의미인거 같은데... 정확하게 원리가 어떻게 되는것인지

     

    /MD, /MT의 컴파일 옵션의 차이점은 컴파일 시 .obj 파일에 어떤 c runtime library를 삽입 하느냐의 차이입니다.

     

     /MD compile option (multithreaded dll)

        c runtime library(MSVCPRT.LIB)를 컴파일 하는 .cpp파일의 .obj 파일에 삽입하여,

        external symbols와 MSVCP71.dll을 통하여 동적 연결(dinamic link)할 수 있게 하고,

        MSVCPRT.LIB는 MSVCP71.dll을 사용할 수 있도록 구성됩니다.

     

     /MT compile option (multithreaded)

        c runtime library(LIBCPMT.LIB)를 컴파일 하는 .cpp파일의 .obj 파일에 삽입하여,

        external symbols와 정적 연결(static link)를 하게 합니다.

     

    MFC의 APP wizard를 통하여 Project를 생성 시,

    MFC를 static library를 사용하게 만들 경우 /MT compile option이 붙고

    shared dll 모드로 만들 경우 /MD compile option이 붙는걸 확인했습니다.

    출처 -

    댓글