lumpie Geschrieben 17. August 2005 Geschrieben 17. August 2005 Hallo, habe mal ne kurze Frage zum Linken mit DLLs. Und zwar: Ich habe 2 DLL Dateien mit den Namen pro_func.dll und pro_dist.dll. Wenn ich mein Programm übersetze und starte (das die dlls zwingend benötigt) müssen die DLLs im Ordner liegen in dem meine Quellcode-Sources/Binaries liegen oder im System bzw System32 Verzeichniss damit es fehlerfrei übersetzt/ausgeführt wird. Kann ich beim Linken bzw. übersetzen irgendwie einen Pfad angeben in den der Compiler bzw. das spätere Programm nach den DLLs suchen soll? Hätte das gerne so. Das Programm liegt unter C:\Programme\Silencer\ und die zugehörigen DLLs unter C:\Programme\Silencer\dlls Kann ich das irgendwie machen? Ich benutze Visual Studio C++ 6.0 Die *.lib Dateien habe ich schon erfolgreich eingebunden (liegen auch nicht im Quellcode Ordner).. Ich weiss - ist vielleicht eine einfache Frage: Ich habe sonst immer in einer anderen Umgebung entwickelt, aber wie das Arbeitsleben so spielt habe ich jetzt keine andere Danke Zitieren
Pointerman Geschrieben 18. August 2005 Geschrieben 18. August 2005 Hi! Ich habe auch mit DLLs gearbeitet, sie aber nicht fest in das Programm verlinkt. Trotzdem arbeitest Du doch aber auch mit "LoadLibrary" oder nicht? Wenn ich mich recht entsinne, dann kannst Du da nicht nur einen Dateinamen, sondern einen ganzen Pfad mit angeben. Da kannst Du dann ja je nach Bedarf den Pfad Deiner Anwendung angeben. Hoffe geholfen zu haben! Zitieren
lumpie Geschrieben 18. August 2005 Autor Geschrieben 18. August 2005 Hi! Ich habe auch mit DLLs gearbeitet, sie aber nicht fest in das Programm verlinkt. Trotzdem arbeitest Du doch aber auch mit "LoadLibrary" oder nicht? Wenn ich mich recht entsinne, dann kannst Du da nicht nur einen Dateinamen, sondern einen ganzen Pfad mit angeben. Da kannst Du dann ja je nach Bedarf den Pfad Deiner Anwendung angeben. Hoffe geholfen zu haben! Hallo, nein ich arbeite im moment nicht mit LoadLibrary(), denn (Quelle MSDN) : 1. The directory from which the application loaded. 2. The system directory. Use the GetSystemDirectory function to get the path of this directory. 3. The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched. 4. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory. 5. The current directory. 6. The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the App Paths registry key. Aber wenn ich mit LoadLibrary() auch einen kompletten Pfad angeben kann (keine explizite DLL) dann verwende ich natürlich das. Bei MSDN war immer nur die Sprache von einer expliziten DLL Datei. Ich werds ausprobieren, danke soweit :nett: Zitieren
Pointerman Geschrieben 18. August 2005 Geschrieben 18. August 2005 Hallo mal wieder. Das oben beschriebene sollte klappen. Ich bin zZ bei meiner Freundin und habe deshalb meinen alten Code noch das MSDN zur Hand, aber ich hab mal bei www.microsoft.com nach LoadLibrary gesucht und folgendes gefunden: lpLibFileName [in] Pointer to a null-terminated string that names the DLL file. The name specified is the file name of the module and is not related to the name stored in the library module itself, as specified by the LIBRARY keyword in the module-definition (.def) file. If the string specifies a path but the file does not exist in the specified directory, the function fails. When specifying a path, be sure to use backslashes (\), not forward slashes (/). Danach sollte es wohl funktionieren. Viel Spaß noch! Zitieren
lumpie Geschrieben 22. August 2005 Autor Geschrieben 22. August 2005 Hallo mal wieder. Das oben beschriebene sollte klappen. Ich bin zZ bei meiner Freundin und habe deshalb meinen alten Code noch das MSDN zur Hand, aber ich hab mal bei www.microsoft.com nach LoadLibrary gesucht und folgendes gefunden: Danach sollte es wohl funktionieren. Viel Spaß noch! Hallo, ich bin wohl zu dumm dazu. Ich habe es so probiert (verschieden Variaten): LoadLibrary(".\\dlls\\pro_func.dll") LoadLibrary(".\\dlls\\pro_func.dll" LoadLibrary(".\\dlls\\*") Er findet bei starten einfach die dlls nicht. Schreibe ich es evtl. an der falsche Stelle im Coding? Wo muss es stehen? :beagolisc Zitieren
Klotzkopp Geschrieben 22. August 2005 Geschrieben 22. August 2005 LoadLibrary wird dir so nicht weiterhelfen. Was du benutzt, ist Load-time dynamic linking, mit einer Importbibliothek. Die DLL-Suchpfade bei Load-time dynamic linking kannst du nicht beeinflussen. LoadLibrary dient zum Run-time dynamic linking. Dabei kannst du den Pfad angeben, aber du kannst keine Importbibliothek verwenden, sondern musst jede Funktion aus der DLL, die du benutzen willst, mit GetProcAddress laden. http://msdn.microsoft.com/library/en-us/dllproc/base/about_dynamic_link_libraries.asp Zitieren
lumpie Geschrieben 22. August 2005 Autor Geschrieben 22. August 2005 LoadLibrary wird dir so nicht weiterhelfen. Was du benutzt, ist Load-time dynamic linking, mit einer Importbibliothek. Die DLL-Suchpfade bei Load-time dynamic linking kannst du nicht beeinflussen. LoadLibrary dient zum Run-time dynamic linking. Dabei kannst du den Pfad angeben, aber du kannst keine Importbibliothek verwenden, sondern musst jede Funktion aus der DLL, die du benutzen willst, mit GetProcAddress laden. http://msdn.microsoft.com/library/en-us/dllproc/base/about_dynamic_link_libraries.asp das ist dumm. kann ich dem compiler (VC++ 6.0) denn nicht irgendwie beibringen, das er das binary so compilieren soll, das er nen zusätzlichen suchpfad hinzufügen kann? (mit *.lib Dateien ging es ja auch) Ansonsten muss ich wohl damit leben das die DLLs im Systemordner oder in dem Ordner herumliegen. Zitieren
Pointerman Geschrieben 23. August 2005 Geschrieben 23. August 2005 Moin! @Lumpie Musst Du denn Deine DLLs mit Load-time dynamic linking einbinden? Oder ist es zu umständlich das jetzt noch zu ändern? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.