Rodzaje bibliotek DLL

Ten temat zawiera informacje ułatwiające określenie rodzaju biblioteki DLL do skompilowania.

Dostępne różne rodzaje bibliotek DLL

Za pomocą programu Visual Studio można tworzyć biblioteki DLL Win32 w języku C lub C++, które nie korzystają z biblioteki klasy Microsoft Foundation (MFC). Projekt dll innych niż MFC można utworzyć za pomocą Kreatora aplikacji Win32.

Sama biblioteka MFC jest dostępna w bibliotekach linków statycznych lub w wielu bibliotekach DLL za pomocą Kreatora bibliotek DLL MFC. Jeśli biblioteka DLL korzysta z MFC, program Visual Studio obsługuje trzy różne scenariusze tworzenia bibliotek DLL:

  • Tworzenie regularnej biblioteki MFC DLL, która statycznie łączy MFC

  • Tworzenie regularnej biblioteki MFC DLL, która dynamicznie łączy MFC

  • Tworzenie biblioteki DLL rozszerzenia MFC, która zawsze dynamicznie łączy MFC

Co chcesz dowiedzieć się więcej?

Wybieranie typu biblioteki DLL do użycia

Jeśli biblioteka DLL nie używa MFC, użyj programu Visual Studio do skompilowania biblioteki DLL win32 innej niż MFC. Łączenie biblioteki DLL z MFC (statycznie lub dynamicznie) zajmuje znaczne miejsce na dysku i pamięć. Nie należy łączyć się z MFC, chyba że biblioteka DLL rzeczywiście używa MFC.

Jeśli biblioteka DLL będzie używać MFC i będzie używana przez aplikacje MFC lub inne niż MFC, należy utworzyć zwykłą bibliotekę MFC DLL, która dynamicznie łączy się z MFC lub zwykłą biblioteką MFC DLL, która statycznie łączy się z MFC. W większości przypadków prawdopodobnie chcesz użyć regularnej biblioteki MFC DLL, która dynamicznie łączy się z MFC, ponieważ rozmiar pliku biblioteki DLL będzie znacznie mniejszy, a oszczędności w pamięci z używania udostępnionej wersji MFC mogą być znaczące. Jeśli statycznie łączysz się z MFC, rozmiar pliku DLL będzie większy i potencjalnie zajmuje dodatkową pamięć, ponieważ ładuje własną prywatną kopię kodu biblioteki MFC.

Tworzenie biblioteki DLL, która dynamicznie łączy się z MFC, jest szybsza niż tworzenie biblioteki DLL, która statycznie łączy się z MFC, ponieważ nie jest konieczne połączenie samego MFC. Jest to szczególnie istotne w przypadku kompilacji debugowania, w których konsolidator musi kompaktować informacje debugowania. Dzięki połączeniu z biblioteką DLL, która zawiera już informacje o debugowaniu, nie ma mniej informacji debugowania, aby skompaktować w ramach biblioteki DLL.

Jedną wadą dynamicznego łączenia z MFC jest to, że należy dystrybuować udostępnione biblioteki DLL Mfcx0.dll i Msvcrxx.dll (lub podobne pliki) za pomocą biblioteki DLL. Biblioteki DLL MFC są bezpłatnie redystrybucyjne, ale nadal należy zainstalować biblioteki DLL w programie instalacyjnym. Ponadto należy wysłać bibliotekę Msvcrxx.dll zawierającą bibliotekę czasu wykonywania języka C używaną zarówno przez program, jak i same biblioteki DLL MFC.

Jeśli biblioteka DLL będzie używana tylko przez pliki wykonywalne MFC, możesz wybrać między utworzeniem zwykłego biblioteki MFC DLL lub biblioteki DLL rozszerzenia MFC. Jeśli biblioteka DLL implementuje klasy wielokrotnego użytku pochodzące z istniejących klas MFC lub należy przekazać obiekty pochodne MFC między aplikacją a biblioteką DLL, należy skompilować bibliotekę DLL rozszerzenia MFC.

Jeśli biblioteka DLL dynamicznie łączy się z MFC, biblioteki DLL MFC mogą być redystrybuowane przy użyciu biblioteki DLL. Ta architektura jest szczególnie przydatna do udostępniania biblioteki klas między wieloma plikami wykonywalnych w celu zaoszczędzenia miejsca na dysku i zminimalizowania użycia pamięci.

Co chcesz dowiedzieć się więcej?

Zobacz też

Tworzenie bibliotek DLL języka C/C++ w programie Visual Studio