Wie kann ich eine DLL umbenennen und trotzdem zulassen, dass die EXE-Datei sie findet?

Wir haben eine DLL, die im Haus hergestellt wird und für die wir die zugehörige statische LIB von Stubs haben.

Wir haben auch eine EXE-Datei, die diese DLL mithilfe der einfachen Methode der statischen Verknüpfung mit der LIB-Datei der DLL verwendet (dh nicht manuell mithilfe von LoadLibrary).

Wenn wir die EXE-Datei bereitstellen, möchten wir, dass der DLL-Dateiname aus Gründen der Verschleierung (auf Kundenwunsch) geändert wird.

Wie können wir das machen, damit unsere EXE die DLL immer noch automatisch findet?

Ich habe versucht, die DLL- und LIB-Dateien umzubenennen (nachdem sie unter ihrem normalen Namen erstellt wurden), und dann die EXE-Projekteinstellungen geändert, um eine Verknüpfung mit der umbenannten LIB herzustellen. Dies schlägt zur Laufzeit fehl, da der Name der DLL in die LIB-Datei eingebettet ist und nicht einfach vom Linker erraten wird, der ".lib" durch ".dll" ersetzt.

Im Allgemeinen möchten wir diese Verschleierung nicht auf alle Verwendungen der DLL anwenden, daher möchten wir die aktuellen DLL-Projektausgabedateien so belassen, wie sie sind.

Ich hoffe, dass es eine Methode gibt, mit der wir die LIB-Datei der DLL bearbeiten und den fest codierten Namen der DLL-Datei durch etwas anderes ersetzen können. In diesem Fall kann dies vollständig innerhalb des EXE-Projekts erfolgen (möglicherweise als vorbereitender Schritt).

Aktualisiere: Ich finde, dass das verzögerte Laden nicht funktioniert, da meine DLL exportierte C ++ - Klassen enthält. SehenDieser Artike.

Gibt es Alternativen?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage