Regularne dll statycznie połączony MFC
Regularne statycznie połączony MFC biblioteki DLL jest biblioteki DLL, która MFC jest używane wewnętrznie i eksportowanych funkcji w bibliotece DLL może być wywoływana przez pliki wykonywalne MFC lub innych niż MFC.Jak opisano nazwę, tego rodzaju DLL jest zbudowana przy użyciu statycznej łącze wersja biblioteki MFC.Funkcje zazwyczaj są eksportowane z regularnych biblioteki DLL przy użyciu standardowych interfejsów C.Przykładem sposobu zapisu, budowania i używania DLL regularnych, zobacz próbki DLLScreenCap.
Należy zauważyć, że termin USRDLL jest już używany w dokumentacji programu Visual C++.Regularne biblioteki DLL, połączoną statycznie MFC ma takie same charakterystyki jak były USRDLL.
Regularne biblioteki DLL, statycznie połączony MFC, ma następujące funkcje:
Wykonywalny klienta mogą być pisane w dowolnym języku, który obsługuje korzystanie z bibliotek DLL (C, C++, Pascal, Visual Basic i tak dalej); nie ma być Aplikacja MFC.
Biblioteka DLL można połączyć się z tym samym MFC statyczne biblioteki używane przez aplikacje.Jest już oddzielnych wersji bibliotek statycznych łącze do biblioteki DLL.
Przed wersji 4.0 MFC USRDLLs pod warunkiem tego samego rodzaju funkcje, jak regularne dll statycznie połączony MFC.Visual C++ w wersji 4.0, termin USRDLL jest przestarzały.
Regularne biblioteki DLL, statycznie połączony MFC, ma następujące wymagania:
Ten typ biblioteki DLL trzeba utworzyć wystąpienie klasy pochodzącej od CWinApp.
Tego rodzaju zastosowań DLL DllMain dostarczonych przez MFC.Umieścić wszystkie biblioteki DLL inicjowania kodu w InitInstance Członkowskich kod funkcji i zakończenie w ExitInstance jak w normalnych aplikacji MFC.
Mimo, że termin USRDLL jest przestarzały, nadal należy zdefiniować "_USRDLL" w wierszu polecenia kompilatora.Definicja ta określa, który deklaracje jest ściągnięta z plikami nagłówka MFC.
Regularne biblioteki DLL muszą mieć CWinApp-uzyskane klasy i pojedynczy obiekt tej klasy aplikacji, jak aplikacja MFC.Jednakże CWinApp obiektu biblioteki DLL nie jest pompa główne wiadomości, podobnie jak CWinApp obiektu aplikacji.
Należy zauważyć, że CWinApp::Run mechanizmu nie stosuje się do biblioteki DLL, ponieważ aplikacja jest właścicielem pompy główne wiadomości.Jeśli biblioteka DLL otwiera okna dialogowe niemodalny lub okno główna ramka z własnej, pompa wiadomości głównym aplikacji musi wywołać rutynowych, wywożonych przez bibliotekę DLL, który z kolei wywołuje CWinApp::PreTranslateMessage funkcji składowej obiektu aplikacji biblioteki DLL.
Przykładem tej funkcji zobacz przykładowy DLLScreenCap.
Symbole eksportowane są zazwyczaj z regularnych biblioteki DLL przy użyciu standardowych interfejsów C.Deklarację funkcji wyeksportowanej z regularnych DLL będzie wyglądać następująco:
extern "C" __declspec(dllexport) MyExportedFunction( );
Wszystkie alokacje pamięci w ramach regularnych DLL powinno pozostać w bibliotece DLL; Biblioteka DLL należy przekazać do lub nie otrzymują od wywołującego pliku wykonywalnego, dowolną z następujących:
Wskaźniki do obiektów MFC
Wskaźniki do pamięci przydzielonej przez MFC
Jeśli trzeba wykonać jedną z powyższych lub trzeba przekazać uzyskane MFC obiektów między wywołujący plik wykonywalny i DLL musi budować rozszerzeniem DLL.
Bezpiecznie przekazać wskaźniki do pamięci, które zostały przydzielone przez biblioteki uruchomieniowej c między aplikacją i biblioteki DLL tylko wtedy, gdy sporządzić kopię danych.Nie musisz usunąć lub zmienić rozmiar tych wskaźników lub z nich korzystać bez kopii pamięci.
DLL, połączoną statycznie MFC również dynamicznie nie można połączyć się z udostępnionym biblioteki MFC DLL.Statycznie połączonego z MFC biblioteki DLL dynamicznie jest powiązany z aplikacji, podobnie jak inne DLL; aplikacje łączyć go tak jak inne biblioteki DLL.
Standardowych bibliotek statycznych łączy MFC są nazywane zgodnie z Konwencją, opisane w Konwencje nazewnictwa dla biblioteki MFC DLL.Jednakże z MFC wersja 3.0 i nowsze należy już do ręcznie określić do linker wersja biblioteki MFC, które mają być połączone w.Zamiast tego pliki nagłówków MFC automatycznie określić poprawną wersję biblioteki MFC połączenie oparte na preprocesora definiuje, takich jak _DEBUG lub _UNICODE.Pliki nagłówków MFC dodać dyrektyw /DEFAULTLIB przeszkolenie łączący łącze w określonej wersji biblioteki MFC.