dll Ordner angeben
-
Meine Anwendung greift auf eine externe Library (OpenCV) zu. Um die Anwendung ausführen zu können, liefere ich folglich die benötigten DLLs mit. Bisher habe ich meine Installationsroutine so konfiguriert, dass die EXE und die DLLs im gleichen Verzeichnis landen und damit die Ausführung der Anwendung ermöglicht wird.
Dieser Weg ist allerdings etwas unsauber. Ich hätte daher gerne einen eigenen Unterordner (\bin), der sämtliche DLLs beinhaltet. Die erste Möglichkeit die DLLs dort zugänglich zu machen wäre, den Pfad beim Setup in der Umgebungsvariable zu ergänzen. Allerdings schieße ich hiermit, denke ich, mit Kanonen auf Spatzen.Simpler wäre doch meiner Anwendung mitzuteilen, wo es die DLLs zu suchen hat - nämlich in \bin. Wie mache ich das unter VS 2005??
-
Würde mich auch mal interessieren :D.
Aber das problem ist ja, dass man das eigentlich gar nicht kontrollieren kann wann das geladen wird ausser man lädt die DLL komplett manuell. In der MSDN hab ich dazu nix gefunden.
rya.
-
Meinst Du vielleicht sowas?
-
Sieht vielversprechend aus, aber klappt nicht. Habe eine der DLLs in den Unterordner \bin gepackt und den PATH entsprechend angegeben (absolut und relativ, mit und ohne Anführungszeichen,...). Dann kommt immer die Fehlermeldung, dass er die DLL nicht finden kann.
Des Weiteren ist das ja eigentlich nur fürs Debugging interessant, oder?
-
Flockig schrieb:
Sieht vielversprechend aus, aber klappt nicht. Habe eine der DLLs in den Unterordner \bin gepackt und den PATH entsprechend angegeben (absolut und relativ, mit und ohne Anführungszeichen,...). Dann kommt immer die Fehlermeldung, dass er die DLL nicht finden kann.
Des Weiteren ist das ja eigentlich nur fürs Debugging interessant, oder?Jo, aber ich ging auch davon aus, dass Du es nur fürs Debuggen haben wolltest, da Du es ja aus dem Studio heraus starten wolltest.
Bei mir geht es, so wie es in der Beschreibung steht. Die dll ist aber kompatibel zu Deinem Executable, oder? Nicht zufällig das eine Debug und das andere Release oder so, oder?
Es besteht dann noch die Möglichkeit, die dll mittels LoadLibrary und GetProcAddress dynamisch zur Laufzeit zu binden. Bei LoadLibrary müsstest Du auch einen Pfad mit angeben können.
-
Zur Laufzeit ist bekannt - nur das geht nicht bei allen DLLs.
Im Prinzip bräuchte man einen Loader der das Verzeichnis /bin in den Systempfad lädt und dann die Anwendung startet. Dann wäre das möglich. Ist mir persönlich aber zuviel Streß. Zumindest bin ich der Meinung dass es so gehen könnte hehe. Probiert hab ichs nich.
rya.