Ich bin auf der Suche nach einem sauberen Weg, Bibliothek explizit zu laden. Meistens habe ich ein LIB und ein DLL-Paar, so dass die LIB alle "Lade-Sachen" verarbeiten und ich die Funktion in der DLL direkt aufrufen kann. Wenn dies explizit tun, muss ich irgendwie die folgenden Funktionen ausführen:saubere Möglichkeit, Bibliothek explizit zu laden
HMODULE libA = LoadLibrary("dllA.dll"); // NULL if load failed
HMODULE libB = LoadLibrary("dllB.dll"); // NULL if load failed
void (*functionA)(void) = libA ? GetProcAddress(libA,"functionA"):NULL;
void (*functionB)(void) = libB ? GetProcAddress(libB,"functionB"):NULL;
Es chaotisch sein wird, wenn die Loadlibrary() und GetProcAddress() sind alle über meinen Code gefunden, wenn ich Funktion in DLL aufrufen müssen. Ich würde gerne wissen, ob es einen sauberen Weg gibt, so dass ich die gesamte Handhabung in 1-2 Dateien schreiben und die Funktionen aufrufen kann, als ob ich die Bibliothek implizit über LIB und DLL-Paar lade.
Sie können einmal an einer Stelle "LoadLibrary" und dann mehrmals "GetProcAddress" aufrufen, um alle Funktionszeiger zu erhalten und sie dann zu verwenden. Sie können auch Verzögerung laden für diese DLL implementieren – RbMm
Dies ist Programmierung 101. Erstellen Sie eine Funktion oder eine Klasse, die diese Funktionalität für Sie umschließt und schützt Sie vor den Details. –
Sie können sich auch [Boost.DLL] (http://www.boost.org/doc/libs/release/doc/html/boost_dll.html) ansehen, die etwas Abstraktion bietet. Habe es selbst noch nicht benutzt, aber die [Beispiele] (http://www.boost.org/doc/libs/release/doc/html/boost_dll/tutorial.html#boost_dll.tutorial.plugin_basics) sehen ziemlich sauber aus. – zett42