001
10.04.2010, 17:45 Uhr
0xdeadbeef
Gott (Operator)
|
Naja, eine DLL kann Funktionen exportieren, wie sie lustig ist. Wenn die DLL beispielsweise eine Funktion
C++: |
extern "C" __declspec(dllexport) int run(int argc, char *argv[]);
|
exportiert, kann das Hauptprogramm rund so aussehen:
C++: |
int main(int argc, char *argv[]) { LPCTSTR dllname = _T("deine.dll"); update_dll_if_necessary(dllname); // Pseudocode
HINSTANCE dll; int (*real_main)(int, char *argv[]);
if((dll = LoadLibrary (dllname)) != NULL && (real_main = GetProcAddress(dll, _T("run"))) != NULL) { int result = real_main(argc, argv); FreeLibrary(dll); return result; } else { // Linkerfehler } }
|
der ganze eigentliche Programmcode befände sich innerhalb der DLL, und das Hauptprogramm lockt die vorhandene DLL nicht, bevor sie upgedatet wurde. Allerdings ist es natürlich Jacke wie Hose, ob du jetzt eine .dll runterlädst und dynamisch linkst oder eine .exe runterlädst und per execv() o.ä. startest. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 10.04.2010 um 17:50 Uhr von 0xdeadbeef editiert. |