Zum Inhalt springen

dll Export Problem


S. Bauermann

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

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...