Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » C++ Dll laden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.04.2010, 14:05 Uhr
dercoder



Hey liebes Forum
Ich beschäftige mich mit DLLs und deren Einbindung.
Leider scheitere ich schon am Anfang.
Ich lade mit LoadLibrary die Dll und wenn ich mich nicht irre wird die Funktion

C++:
BOOL APIENTRY DllMain (HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    MessageBox (NULL, "attached...", "", MB_OK);    // Test, laden hat geklappt
    return TRUE;
}


aufgerufen, sobald die Dll geladen wird/wurde. Das ist aber bei mir nicht der Fall.
Hat jemand ne Ahnung, woran das liegen könnte oder hatte jemand schonmal das gleiche Problem?

Vielen Dank im Voraus
mfg DerCoder

Bearbeitung von 0xdeadbeef:

cpp-Tags eingefügt. Nächstes mal selbst machen.


Dieser Post wurde am 03.04.2010 um 14:34 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.04.2010, 14:35 Uhr
0xdeadbeef
Gott
(Operator)


Exportiert die DLL die DllMain-Funktion?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.04.2010, 14:59 Uhr
~dercoder
Gast



C++:
#ifdef KEYDLL3_EXPORTS
#define KEYDLL3_API __declspec(dllexport)
#else
#define KEYDLL3_API __declspec(dllimport)
#endif

KEYDLL3_API void installhook(HWND,HINSTANCE);
KEYDLL3_API void removehook();

Das hab ich in meiner dll.h drin stehen, ich weiß nicht, ob das reicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.04.2010, 15:19 Uhr
0xdeadbeef
Gott
(Operator)


Du solltest DllMain auch mit KEYDLL3_API versehen. Oder direkt __declspec(dllexport) davorschreiben; ich nehme nicht an, dass DllMain wirklich eine API-Funktion ist, aber das Symbol muss exportiert werden, damit der Linker es finden kann.

Übrigens, wenn die DLL ein C-API exportiert, bietet es sich an, eine .def-Datei zu verwenden.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 03.04.2010 um 15:20 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.04.2010, 15:38 Uhr
~dercoder
Gast


Okay, vielen Dank für den Tipp. Ich probiers gleich mal aus.
Ich habe eine .def Datei, aber da steht nichts drin von DllMain.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.04.2010, 15:41 Uhr
0xdeadbeef
Gott
(Operator)


Siehe http://msdn.microsoft.com/en-us/library/d91k01sh.aspx zu def-Dateien.

Beachte dabei, dass C++-Code, der als C-API exportiert werden soll, explizit extern "C" deklariert werden muss.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 03.04.2010 um 15:43 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.04.2010, 15:04 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

kleiner Nachtrag:

die DllMain wird wie die WinMain aufgerufen, wenn die DLL geladen wird. d.h dein anderes Programm müsste nur

LoadLibrary("foo.dll")

aufrufen, damit deine dll geladen wird und eben die DllMain ausgeführt wird.

Wenn du Funktionen exportieren willst, und diese dann aus deinem Hauptprogramm z.b mit

meine_exportierte_funktion();

aufrufen willst, DANN musst du das so machen wie 0xdeadbeef geschrieben hat.

Deine installhook und removehook-funktionen sind so deklariert damit sie exportiert und importiert werden können.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: