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
- 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: