Zum Inhalt springen

DLLs in Projekt linken / einbinden


lumpie

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...