Biblioteki DLL

Zadanie 1

Utwórz bibliotekę DLL:

wyeksportuj z niej funkcję Komunikat, która wyświetla okno MessageBox z zadanym w argumencie komunikatem,

wyeksportuj klasę o nazwie MojaKlasa zawierającą metodę publiczną Komunikat działającą identycznie jak powyższa funkcja.

korzystając z narzędzia DumpBin.exe zobacz listę eksportowanych (oraz importowanych) funkcji z utworzonego pliku .dll oraz .lib.

do eksportowania wykorzystaj modyfikator:

extern "C" __declspec(export)

Utwórz w ramch tego samego rozwiązania nowy projekt i zlinkuj bibliotekę statycznie (niejawnie). Przetestuj działanie dostępnych w bibliotece funkcji i klas.

dodaj do biblioteki DLL funkcję DllMain. Wyświetl komunikaty (MessageBox) infromujące o tym jaki był powód uruchomienia tej funkcji (np. DLL_PROCESS_ATTACH)

do importowania funkcji i zmiennych z biblioteki wykorzystaj modyfikator:

extern "C" __declspec(import)

korzystając z DumpBin.exe zobacz listę eksportowanych (oraz importowanych) funkcji z utworzonego pliku .exe

utwórz dodatkowy wątek tak aby wywołać w bibliotece dll funjcę DllMain z DLL_THREAD_ATTACH

Utwórz w ramch tego samego rozwiązania nowy projekt i zlinkuj bibliotekę dunamicznie (jawnie) w czasie działania programu. Przetestuj działanie dostępnych w bibliotece funkcji i klas.

korzystając z DumpBin.exe zobacz listę eksportowanych (oraz importowanych) funkcji z utworzonego pliku .exe

wyświetl pełną ścieżkę i nazwę wczytanej biblioteki,

przydatne funkcje:

LoadLibrary wczytuje moduł do pamięci wirtualnej procesu

GetProcAddress uzyskuje adres importowanej funkcji

FreeLibrary zwalnia zasoby biblioteki DLL

GetModuleFileName

AddDllDirectory

Umieść w bibliotece DLL następujące zasoby: dowolny napis, dowolne menu

wczytaj z biblioteki zapisane zasoby. Wczytany tekst wyświetl a menu załaduj jako menu kontekstowe (aktywowane prawym klawiszem myszy w oknie)

przydatne funkcje:

LoadString

LoadMenu

TrackPopupMenu

GetSubMenu

GetCursorPos