Ich bin mein Gehirn versucht, mit einer eleganten Lösung für ein DLL-Ladeproblem zu kommen. Ich habe eine Anwendung, die statisch mit anderen lib-Dateien verknüpft, die DLLs laden. Ich lade die DLLs nicht direkt. Ich hätte gerne einige DLLs in einem anderen Ordner als dem Ordner, in dem sich die ausführbare Datei befindet. So etwas wie% working_folder% \ dlls - ich hätte lieber nicht Dutzende (ja ... Dutzende) von DLLs in meinem% Arbeitsordner% .fügen Sie benutzerdefinierte DLL Suchpfad @ Anwendung Start
Ich versuche, etwas zu entwickeln, das Teil der Haupt-App ist, die den Suchpfad @ Start anpassen wird. Das Problem ist, dass dieser neue benutzerdefinierte DLL-Pfad nicht im Systemsuchpfad enthalten ist. Wenn ich die App starte, stürzt es ab (STATUS_DLL_NOT_FOUND), weil die notwendigen DLLs nicht an den richtigen Stellen sind. Ich möchte @ startup überprüfen, wenn sich dieser neue benutzerdefinierte DLL-Ordner im Suchpfad der Prozessumgebungsvariablen befindet, und wenn er nicht hinzugefügt wird. Das Problem ist, dass die Anwendung versucht, alle diese DLLs zu laden, bevor die App eine Codezeile ausführt.
Wie behebe ich das? Ich habe überlegt, eine Hilfe-App zu schreiben, die zuerst startet, die Umgebungsvariablen entsprechend anpasst und die Haupt-App über CreateProcess startet. Das wird funktionieren, da bin ich mir sicher, aber es macht den Entwicklern Schwierigkeiten. Wenn sie die Haupt-App debuggen, werden sie nicht zuerst eine Hilfs-App starten - nicht dass sie das überhaupt können.
Ich habe versucht, die Registrierung App-Pfad-Funktion ohne Erfolg. Das gleiche Problem mit Huhn und Ei wie zuvor.
Was kann ich hier tun?
funktioniert Windows hat so etwas wie @load_path in OS X zu setzen? Nämlich zum definierten Suchpfad relativ zur aktuellen DLL oder sowas? Danke. – Royi