Hostanwendung für DLL? (war Probs mit FAQ)
-
Hi,
Tasten - systemweit abfangen (Hooks)Hier wird erkährt wie ich einen systemweiten hook schreibe.
Wenn ich die Dll erzeuge ( compiliere ) kommt immer ein fehler:
Die Fehlersuche für ein Projekt kann nicht gestartet werden, solange keine Host-Anwendung definiert ist. Verwerden Sie das Dialogfenster Start|Paramter..Warum braucht eine Dll eine Hostanwendung ?
Und kann ich als Host anwendung irgent eine Anwedung angeben ?Auch wenn dieser Fehler kommt, kompiliert er mir die DLL.
Aber es funktioniert irgentwie beim ausführen von den Funktionen von der Dll, wenn sie importiert wurden, etwas nicht. Kann es daran liegen ? Mc hatte ja als letzten Post geschrieben, dass die DLL Vvollständig kompiliert werden muss.Wäre für jegliche Hilfe dankbar.. Cu
<edit>Bitte aussagekräftige Überschriften wählen, danke!</edit>[ Dieser Beitrag wurde am 24.05.2003 um 14:08 Uhr von junix editiert. ]
-
EIne DLL ist kein ausführbares Programm und muss von einer (Host-) Anwendung geladen werden. In deinem Fall wäre die Hostanwendung also die Anwendung die den Hook benutzt. Die kannst du irgendwo im Menü Start eintragen. Den genauen Punkt weiss ich jetzt nichtmehr.
-junix
-
Hm, das ist aber dann total unlogisch. Ich muss mein Programm compilieren.
Dann ein neues Dll-Projekt erstellen und dann als Hostanwendung mein Projekt angeben.Aber ich kann mein Projekt nicht Compilieren(nicht dll) .. weil ich meine Dll nicht laden kann ..
Oder wie funktioniert das Genau ?
-
Statt nur F9 zu drücken sollteest du mal Alt + F9 (nur erstellen, nicht starten) drücken (o;
-junix
-
Hm, hab ich versucht, aber mein es wurde keine Exe-Datei erstellt ??
-
Hoppla natürlich Strg + F9... schau doch selber ins "Projekt" menü.. Projekt erstellen heisst der Punkt
-junix
-
Jo, hab ich auch gemacht, kommen aber immernoch zwei Fehler:
[Linker Fehler] Unresolved external 'SetHook' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\KEYLOGGER\UNIT1.OBJ
[Linker Fehler] Unresolved external 'RemoveHook' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\KEYLOGGER\UNIT1.OBJ
Wenn ich dann die beiden Funktionen nicht aufrufe(wegmache) geht es.
WOran kann es liegen ?
-
Kann ich die Dll nicht einfach irgentwie in mein Projekt einbinden ?
-
Kann mir da wirklich keiner Helfen ?
-
Bitte nicht nerven. 1 Nachfrage maximal bei 1 Tag inaktivität!
Hast du dich exakt an die Anwendungen im FAQ-Beitrag gehalten?
-junix
-
Vieleicht mal im Menü Projekt "Alle Projekte erstellen" anklicken? Könnte vielleicht gehen.
Gast2
[ Dieser Beitrag wurde am 26.05.2003 um 17:38 Uhr von Jansen editiert. ]
-
Original erstellt von <Gast>:
Wenn ich die Dll erzeuge ( compiliere ) kommt immer ein fehler:
Die Fehlersuche für ein Projekt kann nicht gestartet werden, solange keine Host-Anwendung definiert ist. Verwerden Sie das Dialogfenster Start|Paramter..Hi,
das ist normal! Du kannst danach ein Projekt erstellen, welches die dll nutzt! Du musst dann nur noch die dll zum Projekt hinzufügen und die Funktionen importieren!MFG
Alexander Sulfrian
-
Hi,
Wíe kann ich die dll hinzufügen ?
Per Code oder wie ?Cu
-
Hi,
einfach 'Projekt'->'Zum Projekt hinzufügen'MFG
Alexander Sulfrian
-
Hab ich versucht, funktioniert nicht.
Folgende Schritte habe ich durchgeführt:
----------------------------------------- Erstellen der Dll + Einfügen des codes. => Mit [STRG-F9] Compiliert.
- Eine "noramle" win32 Anwendung erstellt, Code eingetragen, Dll ( wie Alexander gesagt hat ) hinzugefügt. => Compiliert.
Fehler:
-------
**
[Linker Fehler] Unresolved external 'SetHook' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\KEYLOGGER\UNIT1.OBJ[Linker Fehler] Unresolved external 'RemoveHook' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\KEYLOGGER\UNIT1.OBJ
**Ich verwende C++ Builder 5.0 Aber ich glaube das müsste egal sein.
Bye
-
Hallo,
es gibt zwei Wege um DLLS zu nutzen, man kann sie statisch bzw. dynamisch laden. Beim statischen laden muss die LIB Datei mit ins Projekt eingefügt werden, beim dynamischen laden, ladt man direkt die DLL mittels LoadLibrary und muss sich dann mittels zeiger Zugriff zu den Funktionen schaffen.
Einfach eine DLL ins Projekt mit einbinden geht nicht.
Bye Philipp
-
Ok, Danke.
Und wie erstelle ich diese Lib von einer Dll ?
-
Hi,
wenn du deine DLL compilierst erscheint ja irgend wann die Meldung mit der Host Anwendung. Zu Dieser Zeit ist die DLL und die LIB Datei einsatzbereit. EInfach dann im Hauptprojekt unter die LIB Datei mit einbinden.
Gruß Philipp