Die Krux mit den dll-Pfaden (Nutzung von Abhängigkeiten in Unterverzeichnis zur Laufzeit)



  • Bei einem Versuch auf .net 8 Funktionalitäten vom C++ Builder aus zuzugreifen, bin ich über ein kleines Problem mit den Pfaden gestolpert. Unsere .net-Projekte liegen in einem Unterverzeichnis unterhalb des auszuführenden Programmes (das wiederum aus dem C++ Builder erzeugt wurde [bcc64, RAD Studio 12]).

    Verwendet ich nun LoadLibrary auf eine dll des Unterverzeichnisses, wird diese nicht eingelesen (da die Abhängigkeiten eben in diesem Unterverzeichnis liegen). Ich habe testweise die Dateien in das gleiche Verzeichnis kopiert und dort (abgesehen von Fehlern in dem Stringübergaben, das ist aber ein anderes Thema, da muss ich noch schauen was ich falsch Übergebe/Zurückgebe; die Testfunktionen, die nur mit Integern arbeiten, liefern jedenfalls das erwartete) funktionieren die kompletten Zugriffe auch.

    Wie kann ich bei einer C++ Builder Anwendung zur Laufzeit ein Unterverzeichnis für Abhängigkeiten nutzen? Gibt es da eine Lösung, oder muss ich jetzt wirklich alles in ein Verzeichnis zusammenschmeißen?



  • Kann SetDllDirectory das Problem lösen? Ich weiß nicht, ob ich das Problem richtig verstanden habe. In der LibLoaderAPI gibt's noch nen Haufen anderer Funktionen, vielleicht ist da noch was dabei.



  • @DocShoe Hört sich zumindest von der Beschreibung her gut an. Ich probiere es gleich aus.



  • @DocShoe Danke für den Typ, scheint aber leider wohl nicht in Zusammenhang mit den .net Assemblies sauber zu laufen...

    Dann werden eben Teile doppelt ausgeliefert... xD


Anmelden zum Antworten