Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Dev-C++ DllMain

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
02.01.2008, 23:50 Uhr
~lea
Gast


Wieso startet die funtion nicht wenn dich die Dll lade ?


C++:
BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{
    switch(reason)
    {
    case DLL_PROCESS_ATTACH:
                  MessageBox(0,"hallo","",MB_OK);
           }
    /* Returns TRUE on success, FALSE on failure */
    return TRUE;
}


int _tmain(int argc, _TCHAR* argv[])
{
    HMODULE hDll = LoadLibrary("xxx.dll");
    if(hDll == NULL)
        printf("fehler");
           getchar();
    return 0;
}


Wenn ich die Dll mit Visual Studio compiliere funktionierts.
Aber es sollte doch mit dem Dev-C++ compiler genause gehn , oder nicht ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.01.2008, 00:12 Uhr
0xdeadbeef
Gott
(Operator)


Wenn du das als C++-Code kompilierst, wird das Symbol name-gemangled, und der Linker findet es nicht, also

C++:
extern "C" BOOL APIENTRY DllMain(...


DllMain hat allerdings wenig mit Ansi-C/C++ zu tun, also verschieb ich das ganze mal ins WinAPI-Forum.


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 03.01.2008 um 00:12 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.01.2008, 09:31 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
DevC++ ist da wohl irgendwo buggy oder so, weil in APIENTRY steht normalerweiße WINAPI, was wiederrum __cdecl ("c-declaration") entspricht, was wiederrum extern "C" entspricht.

Nur DevC++ ist sowieso nicht so der Hit. Probier lieber Code::Blocks aus, der gcc der da dabei ist ist wenigstens standardkonform.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.01.2008, 12:02 Uhr
~lea
Gast


Danke für die schnelle Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.01.2008, 00:15 Uhr
veemon



Bei Dev-C++ könnte das Problem beim Linker liegen. Wenn man nämlich z.B. ein glut-Projekt startet, funktioniert glut. Wenn ich nur das OpenGL-Projekt starte, funktioniert glut nicht.

Dazu in DevC++: 'Projekt' 'Projekt Optionen' 'Parame...' bei 'Linker'

in einem glut-Projekt steht -lglut32, -glu32 und -opengl32

bei einem OpenGL-Projekt nur -opengl32

Kennt sich jemand mit diesem Problem aus (Linker)?


// Edit: 16.01.08 00:20 Uhr

Dieser Post wurde am 16.01.2008 um 00:20 Uhr von veemon editiert.
 
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: