DLL 종류Kinds of DLLs

이 항목에서는 빌드할 DLL의 종류를 결정하는 데 도움이 되는 정보를 제공합니다.This topic provides information to help you determine the kind of DLL to build.

사용할 수 있는 여러 종류의 DLLDifferent Kinds of DLLs Available

Visual Studio를 사용하면 MFC(Microsoft Foundation Class) 라이브러리를 사용하지 않는 Win32 DLL을 C 또는 C++에서 빌드할 수 있습니다.Using Visual Studio, you can build Win32 DLLs in C or C++ that do not use the Microsoft Foundation Class (MFC) library. Win32 애플리케이션 마법사를 사용하여 비MFC DLL 프로젝트를 만들 수 있습니다.You can create a non-MFC DLL project with the Win32 Application Wizard.

MFC 라이브러리 자체는 MFC DLL 마법사로 정적 연결 라이브러리나 다수의 DLL에서 사용할 수 있습니다.The MFC library itself is available, in either static link libraries or in a number of DLLs, with the MFC DLL Wizard. DLL이 MFC를 사용 중인 경우 Visual Studio는 다음과 같은 세 가지 DLL 개발 시나리오를 지원합니다.If your DLL is using MFC, Visual Studio supports three different DLL development scenarios:

  • 정적으로 MFC를 연결하는 기본 MFC DLL 빌드Building a regular MFC DLL that statically links MFC

  • 동적으로 MFC를 연결하는 기본 MFC DLL 빌드Building a regular MFC DLL that dynamically links MFC

  • 항상 MFC를 동적으로 연결하는 MFC 확장 DLL 빌드Building an MFC extension DLL, which always dynamically link MFC

추가 정보What do you want to know more about?

사용할 DLL의 종류 결정Deciding Which Kind of DLL to Use

DLL에서 MFC를 사용하지 않는 경우 Visual Studio를 사용하여 비 MFC Win32 DLL을 빌드합니다.If your DLL does not use MFC, use Visual Studio to build a non-MFC Win32 DLL. DLL을 MFC에 연결하면(정적으로 또는 동적으로) 상당한 디스크 공간과 메모리를 차지합니다.Linking your DLL to MFC (either statically or dynamically) takes up significant disk space and memory. DLL이 실제로 MFC를 사용하지 않는다면 MFC에 연결해서는 안 됩니다.You should not link to MFC unless your DLL actually uses MFC.

DLL이 MFC를 사용하고 MFC 애플리케이션이나 비 MFC 애플리케이션에서 사용되는 경우에는 동적으로 MFC에 연결하는 기본 MFC DLL이나 정적으로 MFC에 연결하는 기본 MFC DLL을 빌드해야 합니다.If your DLL will be using MFC, and will be used by either MFC or non-MFC applications, you must build either a regular MFC DLL that dynamically links to MFC or a regular MFC DLL that statically links to MFC. DLL의 파일 크기가 훨씬 작고 MFC의 공유 버전을 사용하여 메모리를 절약하는 것이 중요할 수 있으므로 대부분의 경우는 MFC에 동적으로 연결하는 기본 MFC DLL을 사용하는 것이 좋습니다.In most cases, you probably want to use a regular MFC DLL that dynamically links to MFC because the file size of the DLL will be much smaller and the savings in memory from using the shared version of MFC can be significant. 정적으로 MFC에 연결하는 경우 MFC 라이브러리 코드의 프라이빗 복사본을 로드하기 때문에 DLL의 파일 크기가 커지고 추가 메모리를 차지할 가능성이 있습니다.If you statically link to MFC, the file size of your DLL will be larger and potentially take up extra memory because it loads its own private copy of the MFC library code.

MFC에 동적으로 연결하는 DLL을 빌드하는 것은 MFC 자체를 연결할 필요가 없으므로 정적으로 MFC에 연결하는 DLL을 빌드하는 것보다 빠릅니다.Building a DLL that dynamically links to MFC is faster than building a DLL that statically links to MFC because it is not necessary to link MFC itself. 이는 링커가 디버그 정보를 압축해야 하는 디버그 빌드에서 특히 그렇습니다.This is especially true in debug builds where the linker must compact the debug information. 이미 디버그 정보를 포함하는 DLL과 연결하면 DLL 내에서 압축할 디버그 정보가 줄어듭니다.By linking with a DLL that already contains the debug information, there is less debug information to compact within your DLL.

MFC에 동적으로 연결하는 것의 단점 한 가지는 공유 DLL Mfcx0.dll 및 Msvcrxx.dll(또는 유사한 파일)을 DLL과 함께 배포해야 한다는 것입니다.One disadvantage to dynamically linking to MFC is that you must distribute the shared DLLs Mfcx0.dll and Msvcrxx.dll (or similar files) with your DLL. MFC DLL은 자유롭게 재배포할 수 있지만 그래도 여전히 설치 프로그램에 DLL을 설치해야 합니다.The MFC DLLs are freely redistributable, but you still must install the DLLs in your setup program. 또한 프로그램 및 MFC DLL 자체에서 사용되는 C 런타임 라이브러리를 포함하는 Msvcrxx.dll을 제공해야 합니다.In addition, you must ship the Msvcrxx.dll, which contains the C run-time library that is used both by your program and the MFC DLLs themselves.

MFC 실행 파일에서만 DLL이 사용되는 경우에는 기본 MFC DLL 빌드와 MFC 확장 DLL 빌드 중에서 선택할 수 있습니다.If your DLL will only be used by MFC executables, you have a choice between building a regular MFC DLL or an MFC extension DLL. DLL이 기존 MFC 클래스에서 파생된 다시 사용할 수 있는 클래스를 구현하거나 애플리케이션과 DLL 간에 MFC 파생 개체를 전달해야 하는 경우에는 MFC 확장 DLL을 빌드해야 합니다.If your DLL implements reusable classes derived from the existing MFC classes or you need to pass MFC-derived objects between the application and the DLL, you must build an MFC extension DLL.

DLL이 동적으로 MFC에 연결하는 경우 DLL을 사용하여 MFC DLL을 재배포할 수 있습니다.If your DLL dynamically links to MFC, the MFC DLLs might be redistributed with your DLL. 이 아키텍처는 디스크 공간을 절약하고 메모리 사용을 최소화하기 위해 여러 실행 파일 간에 클래스 라이브러리를 공유하는 데 특히 유용합니다.This architecture is particularly useful for sharing the class library between multiple executable files to save disk space and minimize memory usage.

추가 정보What do you want to know more about?

참조See also

Visual Studio에서 C/C++ DLL 만들기Create C/C++ DLLs in Visual Studio