Hallo,
Es kommen in Zukunft noch viele weiteren Funktionen hinzu und deswegen hatte ich die Idee, die Funktionen einzeln in DLL's(?) zu kompilieren und so das Programm nur noch daraus besteht, die Dateien aus dem Ordner auszulesen, das Manü zu generieren und funktionalität reinzubringen.
Kann so etwas funktionieren? Wenn ja, wie?
Naja, wenn Du unter Windows arbeitest, dann kannst Du DLLs dynamisch nachladen und dann funktionen aus diesen DLLs aufrufen. Dazu gibt es unter Windows die Funktionen LoadLibrary und GetProcAddress.
Im folgenden mal ein ungetestetes Codebeispiel, sollte aber funktionieren:
DLL-Code:
int __declspec(dllexport) meineTolleFunktion (int a, double b) {
// mach was tolles
}
Ausführbarer Code:
// Zeiger auf die Funktion definieren
int (*referenz)(int, double);
const char *dllDatei = "meinedll.dll";
HMODULE dllReferenz;
int resultat;
dllReferenz = LoadLibrary(dllDatei);
if (!dllReferenz) {
// Fehler, nutze GetLastError(), um die Ursache zu finden
return ...;
}
referenz = (int (*)(int, double)) GetProcAddress(dllReferenz, "meineTolleFunktion");
if (!referenz) {
// Fehler!
// DLL entladen
FreeLibrary(dllReferenz);
// Fehler mit getLastError() bestimmen, behandeln
return ...;
}
// Funktion aufrufen mit ein paar werten
resultat = referenz (1, 2.0);
// DLL entladen
FreeLibrary(dllReferenz);
// Fertig.
Das sollte das Grundprinzip erklären, ich hoffe, das hilft weiter. Du kannst die DLL natürlich auch nur ganz am Anfang des Programms laden, dann geladen lassen und am Ende des Programms erst entladen oder so etwas.
Viele Grüße,
Christian