[Suche]Tutorial für eigene dlls
-
hm... werd daraus nicht so wirklich schlau, bzw kommt mir komisch vor ?
Also ich musste vor einiger Zeit schonmal eine dll einbinden nach einer Anleitung. Und da reichte es, in den Projekteinstellungen irgendwo Pfad der dll bekannt zugeben und sie irgendwo bei Projekt -> Einstellungen einzutragen. Dann brauchte man nurnoch bei dem Proejekt #include "name.h" oder so eintragen, und schon war sie hinzugefügt.
In dem Tut wird die dll mit irgendwelchen Aufrufen immer extra geöffnet und wieder geschlossen usw. Evtl kann mir jemand sagen, nach welcher Methode ich das damals gemacht hab? Leider ist die Seite mittlerweile unauffindbar.Wie gesagt, es mussten nur ein paar Einträge in dem Projekteinstellungen vorgenommen werden und danach konnte man sie wie eine gewöhnliche header-Datei einfügen.
-
Bei DLLs gibt's zwei Methoden.
Du kannst sie statisch linken oder dynamisch laden.Statisch Linken ist, wenn du den Pfad zur DLL dem Compilir mitgibtst und dann die .h inkludierst.
Dynamisch Laden ist, wenn du jedesmal wenn du eine Funktion aus der DLL brauchst, diese so lädst:HINSTANCE hDll = LoadLibrary("Super.dll"); if(!hDll) return; // analog zur Funktion int NAME(CString); in der DLL typedef (int)(CALLBACK* fptr)(CString); fptr funktion = GetProcAddr(hDll, "NAME"); if(!funktion) return; int nRet = funktion("hallo");Statisch Linken ist gut, wenn du sehr viele Funktionen aus dieser DLL oft brauchst.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
hehejo schrieb:
Bei DLLs gibt's zwei Methoden.
Du kannst sie statisch linken oder dynamisch laden.Statisch Linken ist, wenn du den Pfad zur DLL dem Compilir mitgibtst und dann die .h inkludierst.
Dynamisch Laden ist, wenn du jedesmal wenn du eine Funktion aus der DLL brauchst, diese so lädst:HINSTANCE hDll = LoadLibrary("Super.dll"); if(!hDll) return; // analog zur Funktion int NAME(CString); in der DLL typedef (int)(CALLBACK* fptr)(CString); fptr funktion = GetProcAddr(hDll, "NAME"); if(!funktion) return; int nRet = funktion("hallo");Statisch Linken ist gut, wenn du sehr viele Funktionen aus dieser DLL oft brauchst.
Das klingt für mich etwas missverständlich:
- statisch: Die Verbindung wird zur Compilezeit hergestellt. Dabei wird neben Header-Datei auch noch die Lib-Datei benötigt
- dynamisch: Die Verbindung wird vollständig zur Laufzeit hergestellt. Insbesondere erhälst du erst zur Laufzeit Feedback ob die gesuchte Funktion mit der von dir angegebenen Signatur wirklich in der DLL vorhanden ist.Der einzige Vorteil von statischem Linken besteht darin, das du Abhängigkeiten zu den DLLs minimieren kannst, was den Prozess der Weitergabe inklusive Versionsproblematik erleichtern kann.
Auch beim dynamischen linken lädt man die DLL mit LoadLibrary() üblicherweise nur einmal und nicht bei jedem Funktionsaufruf neu.
-
Hi! Ich habe eine kleine Anleitung für MFC-dlls geschrieben.
http://gayfiles.de/tutorials/UnterprojektDLL.doc
Vielleicht hilft die ja.
-
gayfiles?? ESTARTU

verlink es doch bitte so:
SO
was wirft das sonst für ein Bild auf dich??

-
Da war jemand so lieb und hat das für mich hochgeladen.

Mein Server klemmt gerade und außerdem hab ich da nix mit (stört mich nicht). :pWas für ein Bild soll das denn werfen? Schwule Frauen gibt es nicht.

-
Juhu Fettes Brot lässt grüssen!
[sing]Schwule Mädchen Sonder einsatz schwule Mädchen Kampfeinsatz schwule Mädchen an jeder Ecke schwule Mädchen in deiner Stadt ... [/sing]
-
o0, neuer Rechner und noch kein Word drauf. Muss ich jetzt erstmal draufpacken um die Datei richtig lesen zu können
Aber ich bedanke mich jetzt schonmal für die Anleitung und für eure Hilfe 
Ich werd das ganze wohl statisch linken.
-
HI!
Mein Server geht gerade so halbwegs und da habe ich es als HTML:
http://www.larsaf-iii.de/forum/cpp/Dll_machen.htm

-
danke

So, ich hab ein bißchen hin und her probiert. Mein Problem ist, dass ich in den Projekteinstellungen nur das Feld "Erzeugt keine .LIB" gefunden hab. ABer weder mit Haken drinnen noch draußen erzeugt er mir eine .LIB. Die fehlt immer
Naja, ich such einfach mal weiter nach Einstellungen 
Ne 2. Frage: Ich muss ja bei der statischen Einbindung den Pfad der dll angeben. Wenn ich das Programm jetzt allerdings einem Freund schicken will, dann "installiert" er es ja nicht unbedingt im gleichen Ordner. Gibts da einen Trick? zB findet er die dll automatisch auch ohne Pfadangabe, wenn sie im selben Ordner wie die exe ist? Oder muss ich dann die dll in ein schon bekanntes Verzeichniss, wie zB in den Windows-Ordner kopieren?
-
Der findet die automatisch, wenn sie im selben Ordner oder in einem Systemordner (System32 oder so) ist. Es wird übrigens immer zuerst im aktuellen Verzeichnis und dann erst im "Path" gesucht.
Auf dem Bild siehst du, wo du den Pfad eingeben musst, damit die dll gleich bei der Exe landet. So mache ich das.

Dann muss man das Programm nur von A nach B kopieren und es läuft.
(Denk daran, immer nur die Release-Version wegzugeben.)
-
also mir hat der link ganz gut geholfen
-
http://www.henkessoft.de/C++/WinAPI/WinAPI Kapitel 1 bis 6/api6.htm
könnte auch helfen
-
estartu_de + Polofreak == :):)
-
hatte länger kein internet, wollte nur mal sagen das ich auch nicht schwul bin ^^

-
@RedSkall: na dann schließt sich der Kreis ja nun! Du warst nicht namentlich erwähnt worden!

-
ok, herzlichen Dank nochmal an euch

Jetzt schaff ich das schon irgendwie mit den vielen Hilfe-Links

-
ok, nochmal eine Frage

Ich spiel in C++ größtenteils mit der Konsole rum, daher bin ich in der Anwendung von ActiveX-Steuerelementen sehr sehr ungeschickt. Jetzt bräuchte ich allerdings für ein Programm einige Buttons, Textboxen und sonstiges. Unter VB6 wäre das für mich kein Problem, da die Handhabung mir dort um einiges einfacher scheint.
Ist es möglich die c++ dll mitsamt ihrer Klasse in mein VB-Projekt einzubinden, oder kann ich die c++Klassen nur in c++ selbst verwenden? Hab schon einige Beispiele zum Einfügen von c++ dlls in VB gefunden, allerdings waren die meist ungenau erklärt und immer nur an Beispielen von Prozeduren und nicht Klassen.Vielen Dank

-
zu \1:
http://download.pearsoned.de/leseecke/VCPLUS6_21Tg/data/kap09.htm
http://download.pearsoned.de/leseecke/VCPLUS6_21Tg/data/kap19.htm
http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel10.htm
http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel11.htm