Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Bitte Hilfe bei Dll

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 ] > 2 <
010
21.06.2003, 18:17 Uhr
CPlusPlus



Oder ist es schwachsinn in DLLs Klassen zu verwenden? Ich hab darüber keine Ahnung wenn mir jemand hlefen könnte wäre ich sehr dankbar.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
21.06.2003, 18:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


mit GetProcAddress lässt sich meines erachtens keine Klasse aus einer Dll laden, wenn du die DLL statisch linkst, geht das ... (siehe __declspec in msdn)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
21.06.2003, 18:34 Uhr
CPlusPlus



Ok also wenn ich das Richtig verstehe kann ich bei einer DLL keine Klassen verwenden. Auser ich benuzte eine Lib File. Aber das will ich ja nicht.
Ich kann aber die Funktionen aus einer DLL in eine Klasse Speicher. Ist das richtig??

THX
Markus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
22.06.2003, 18:22 Uhr
CPlusPlus



Also ich hab jetzt mal Versucht über eine Funktionen einen Zeiger auf ein Klassen Objekt aus meiner DLL zu bekommen, um die Klasse aus der DLL nutzen zu können. Nur leider klappt das nicht so wie ich will.

DLL Header

Code:
class CKlasse
{
    public:
        void Ausgabe(void);
};

extern "C"
{
    __declspec(dllexport) CKlasse* Interface(CKlasse* pKlasse);
}
typedef CKlasse* (__stdcall* LPINTERFACE)(CKlasse* pKlasse);



DLL CPP

Code:
#include <windows.h>
#include <iostream>
#include "Klassen.h"

CKlasse g_Klasse;

BOOL __stdcall DllMain(HINSTANCE hInst,
                       DWORD dwReason,
                       LPVOID pvReserved)
{
    return TRUE;
}

__declspec(dllexport) CKlasse* Interface(CKlasse* pKlasse)
{
    pKlasse = &g_Klasse;
    return pKlasse;
}

void CKlasse::Ausgabe(void)
{
    std::cout << "Ausgabe";
}



Ausführendes Program Header (Header der DLL)

Code:
class CKlasse
{
    public:
        void Ausgabe(void);
};

extern "C"
{
    __declspec(dllexport) CKlasse* Interface(CKlasse* pKlasse);
}
typedef CKlasse* (__stdcall* LPINTERFACE)(CKlasse* pKlasse);



Ausführendes Program CPP

Code:
#include <windows.h>
#include <iostream>
#include "Klassen.h"

int main()
{
    
    HINSTANCE    hDll = LoadLibrary("DLL.dll");
    if(hDll == NULL)
    {
        return 1;
    }
    LPINTERFACE    pInterface = (LPINTERFACE)GetProcAddress(hDll, "Interface");
    if(pInterface == NULL)
    {
        return 1;
    }
    CKlasse Klasse;
    pInterface(&Klasse);

    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
22.06.2003, 19:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Ausführendes Program Header
Code:


C++:
class CKlasse
{
    public:
        void Ausgabe(void);
};

typedef CKlasse* (__stdcall* LPINTERFACE)(CKlasse* pKlasse);



würde ich einfach machen...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
23.06.2003, 11:47 Uhr
CPlusPlus



geht leider auch nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: