Dlls und Libs einbinden
-
Hallo wie der titel schon sat, könnte mir jemand sagen, wie man die dlls und libs in den code integrieren kann?
gehts mit #using oder wie???
thx
-
Mit Header-Dateien der Libs includierst du die Deklarationen der enthaltenen Funktionen. Den Code selbst (also die fertige Lib) musst du dem Linker bekanntgeben, dass er aus ihr ebenfalls Code beziehen kann -> je nach Compiler (ok, eigentlich je nach Linker, aber bei den meisten Compilern wird ein Linker bereits mitgeliefert) geht man da anders vor.
DLLs sind etwas schwieriger. Du hast lädst mit Hilfe der WinAPI die Funktionen zur Laufzeit (Siehe MSDN unter DLLs, vor allem: GetModuleHandle(), GetProcAddress() sind gute Adressen). Kannst aber beim VC++ auch für die DLL ein Export-Definitions-File erstellen damit der Compiler weiß was in der DLL liegt und er führt den Ladevorgang über eine zusätzlich zur DLL erstellen Lib durch (Edit: funktioniert natürlich nur wenn du den Source der DLL hast).
MfG SideWinder
-
Und wie sieht das einbinden von libs aus?? und für dlls muss man einfach eine der beiden funktionen benutzen die du genannt hast wenn ich richtig verstehe??
thx
-
1. Wie gesagt, je nachdem was du für einen Compiler benützt (Welchen?) sieht das Einbinden von Libs unterschiedlich aus.
2. Ja, wobei Möglichkeit 2 wie gesagt nur beim VC funktioniert (andere Compiler bieten eventl. ncoh andere Möglichkeiten).
Wenn du jetzt aber endlich deinen Compiler bekannt gibst kann ich dich ins richtige Forum verschieben wo man dir sicher alles detailliert zeigen kann
MfG SideWinder
-
AA k thx
Also ich benutz den VC++ NET 2003
Sag bloss noch etwas: die 2 ,methoden die du mir erwähnt hast kann man die auch ausserhalb der winapi verwenden?
-
Bei DLLs gibts zwei Arten, wie man sie einbindet:
1. Du hast die Header- und Libdatei für die DLL, die du nutzen willst und diese bindest du wie jede andere Header- und Libdatei ein. (normaler Weg)
2. Es gibt eine WinAPI-Funktion, um eine DLL dynamisch zu laden. Diese heißt LoadLibrary(). Eine detailierte Beschreibung findest du auch hier in der MSDN und natürlich auch die restlichen Funktionen, die du brauchst.
Um eine Libdatei einzubinden, reicht es bei den meisten IDEs, wenn du die Datei zu den Projektdateien in deinem Projekt hinzufügst. Im Quellcode muss nur die passende Headerdatei stehen.
-
kann man die auch ausserhalb der winapi verwenden?
Nein, du kannst die WinAPI-Benutzung über die Library verdecken, aber ohne Windows-System-Aufrufe funktioniert das nicht. DLLs gibts aber sowieso in der Form nur unter Windows (Das Konzept gibts natürlich auf vielen Betriebssystemen).
MfG SideWinder
-
Sagt mal was sind eigentlich dlls?? und libs sind ja aus obj dateien zusammengesetzt aber was steht in eienr obj datei??
soll ich libs am besten mit#pragma(lib,"mylib.lib")
einbinden oder wie?
-
Nein, das ist die schlechteste Lösung.
Ich hab doch schon geschrieben, dass du die Libdateien nur deinen Projektdateien hinzufügen brauchst.
-
ja aber wie geht das denn nun?? übwer die Projekteinstellungen und dann da einfügen oder wie meinst de das wenn ja dann is gut
thx
-
Jo Projekteinstellungen -> Linker -> Irgendwo hier
Zum Unterschied LIB<->DLL benütz bitte die Suchfunktion, wurde schon so oft erklärt
MfG SideWinder
-
jossBoss schrieb:
ja aber wie geht das denn nun?? übwer die Projekteinstellungen und dann da einfügen oder wie meinst de das wenn ja dann is gut
thxHast du schon mal ein Projekt gemacht mit mehreren Dateien? Wenn ja, dann weißt du wie man Dateien dem Projekt hinzufügt.
-
Gibt es eigentlich ein detaliertes Ebook zum Erstellen/Einbinden/... von DLLs?
-
sag mal sidewinder könntest du mir einen link für die threads geben wenn möglich, denn mit der suche lande ich immer bei diesem hier
-
Lyrix schrieb:
Gibt es eigentlich ein detaliertes Ebook zum Erstellen/Einbinden/... von DLLs?
Das hängt ganz vom Compiler ab. Wobei es da meistens recht ähnlich ist. Wenn es um den Quellcode geht, dann sollte dieser natürlich immer gleich aussehen. Dazu gibts sicherlich Tutorials im Netz.
Was das Erstellen angeht, sollte es bei deiner IDE die Möglichkeit geben ein entsprechendes Projekt auszuwählen (also dann wenn du entscheidest, ob du eine Konsolenanwendung, GUI, ... machen willst). Beim Compilieren und Linken wird dann normalerweise eine .lib- und eine .dll-Datei erzeugt.
Das Einbinden hängt normalerweise vom Linker ab und wie du die DLL einbindest. Bei der dynamischen Variante musst du hald die WinAPI benutzen, ansonsten brauchst du die Header- und Libdatei. Die Headerdatei gehört wie gewohnt in den Quellcode eingebunden und die Libdatei muss dem Linker bekannt gemacht werden (also beim Linken entweder mit angeben oder hald zu den Projektdateien hinzufügen).
JossBoss schrieb:
sag mal sidewinder könntest du mir einen link für die threads geben wenn möglich, denn mit der suche lande ich immer bei diesem hier
Welche Suchwörter benutzt du denn?
-
Kann schon sein, der Suchindex ist derzeit Mist. Verwende die darüber angezeigte Google-Suche.
MfG SideWinder
-
Ich hab hier nen code weis aben nicht ob der richtig ist:
#include <sfml-audio.dll>
int main() {
}sfml-audio.dll steht bei mir unter ressourcendateen ist das auch richtig?