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;
}