Dieses Beispiel unter Visual Studio 2008 illustriert, wie man eine dll erzeugen und danach aufrufen kann
Es ist eine Analogie zu den JAR-Files in der JAVA-Welt und deren Wiederverwendung
//unter VS2008: //1. neues projekt -> visual c++ -> win32 projekt //2. Assistent unter Anwendungseinstellungen // = dll // = leeres Projekt //3. hinzufügen -> vorhandenes Element -> dllmain.cpp #include <windows.h> extern "C" { //public-Methoden __declspec(dllexport) LPSTR testString(int i) { LPSTR zahl = new char[4]; itoa (i,zahl,10); //2 = binarysystem 10 = dezimal 16 = hex LPSTR text = "nasebööge änni"; LPSTR alles = new char[strlen(zahl) + strlen(text) + 1]; strcpy(alles,text); strcat(alles,zahl); return alles; } } void startMessageBox(void) { LPSTR msg = "das ist eine automatisch ausgelöste Meldung, wenn dll mit loadlibrary() geladen wird"; MessageBoxA(0, msg, "Autostart", MB_OK | MB_ICONINFORMATION); return; } BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lh3served ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)startMessageBox, NULL, 0, NULL); break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
//unter VS2008: //1. neues projekt -> visual c++ -> win32 projekt //2. Assistent unter Anwendungseinstellungen // = konsolenanwendung // = leeres Projekt //3. hinzufügen -> vorhandenes Element -> = dllCaller.cpp // = dllmaker.dll //4. rechtsklick auf solution // -> eigenschaften // -> konfigurationseigenschaften // -> allgemein -> zeichensatz // = Multi-Byte-Zeichensatz verwenden #include <windows.h> #include <stdio.h> typedef LPSTR(*bProc)(int); int main() { HMODULE hLib=LoadLibrary("dllmaker.dll"); //mit autostart bProc DllFunktion=(bProc)GetProcAddress((HMODULE)hLib, "testString"); //schauen ob es die gibt LPSTR s = DllFunktion(66); printf (s); while (getchar()==0); return 0; }