S. Bauermann Geschrieben 10. Januar 2002 Geschrieben 10. Januar 2002 Guten Tag, ich habe eine Facharbeit vor mir, für die die systemwidehooks benötigt werden. Leider lernt man in zwei Jahren nichts zu dll's und der gleichen. Also: Es gibt in der Msdn einen Artikel Win32 hooks in den Technical Articles. Dort findet sich gleich am Anfang ein sample, dessen Files man sich kopieren kann. Es werden der sourcecode und die fertige exe und die dll für die hooks geliefert. Das fertige Programm läuft super. Nun möchte ich ja selbst an diesen Ansatz weitermachen und deshalb die dll auch selber compilieren. Das Projekt scheint nicht gerade kompatibel zu VS 6 zu sein (Makefile welches nicht akzeptiert wird). Es werden die Dateien: Dllstuff.c, Hooks32.c, Hooks32.def, Hooks32.exe, Hooks32.h, Hooks32.ico, Hooks32.rbj, Hooks32.rc, Hooksdll.c, Hooksdll.def, Hooksdll.exp, Hooksdll.lib, Hooksdll.rbj, Hooksdll.rc, Makefile, Message.rc, Hooksdll.dll. geliefert Wobei eben die Hooks32.exe und die Hooksdll.dll die fertigen Files sind. Nun habe ich die exe mal neu compiliert und das war nach Einbindung der Hooksdll.lib für den Linker auch kein Problem. Ich habe dafür eine Win32 Anwendung gewählt und mit der Hooks32.h, der Hooks32.c und der Messages.rc die exe compiliert - läuft. Nun aber die dll. Ich habe eine Win32 Dynamic-Link-Libary als Projekt gewählt. Diesmal habe ich die Hooksdll.c, die Hooks32.h und die Message.rc gewählt. Ich hatte die dll leer angelegt und die Dateien dann für das Projekt importiert. Nun habe ich das ganze compiliert und bis auf zwie Warnungen das nicht alle Steuerelementpfade einen Wert zurückgeben, gabs keine Probleme. Nun sah ich schon das die original dll nur 51 kb hatte meine neu compilierte aber über 200 kb. Gut es ist ja eine neue Linkerversion die Dateien stammen ja von 1992. Doch als ich nun die dll mit der neu erstellten exe öffnen wollte sah ich das Problem: Fehlermeldung: Die Datei HOOKS32.EXE ist verknüpft mit dem fehlenden Export-HOOKSDLL.DLL:InitHooksDll. Nun habe ich alles mögliche ausprobiert aber obwohl das ja nun ein Lehrexample ist kann ich nicht davon lernen, weil ich die dll mit dem sourcecode nicht durchcompilieren kann. Vielen vielen Dank für jeden guten Tip, denn ich würde das Problem gerne lösen. Sven Zitieren
Crush Geschrieben 10. Januar 2002 Geschrieben 10. Januar 2002 Ich habe mir das Hooks-Beispiel nie angesehen, aber ich hoffe mal, daß es sich hier nicht um eine statische DLL-Bindung handelt, weil die nur von der Professional und Enterprise Edition vom Studio unterstützt wird. Solltest Du mit einer davon arbeiten kann dies auf keinen Fall das Problem sein. Je nachdem was für eine Aufrufkonvention besteht, solltest Du als Compileroption entweder /Gd für __cdecl (standard Exporte) oder /Gr für __fastcall (RTTI - das ist aber sehr unwahrscheinlich) oder /Gz für __stdcall (regulärer C Aufruf) ausprobieren, vielleicht kann dann alles richtig gebunden werden. Ansonsten würde ich nochmal checken, ob auch alle Dateien im Projekt drin sind. Zitieren
S. Bauermann Geschrieben 12. Januar 2002 Autor Geschrieben 12. Januar 2002 Die Exports waren nicht ganz sauber geschrieben. Ich habe es nach einigen Stunden pause gesehen. Gruß Sven Zitieren
Crush Geschrieben 13. Januar 2002 Geschrieben 13. Januar 2002 Schreib- und Tipp-Fehler sind immer gemein. 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.