handle aus dll exportieren



  • hallo alle zusammen,

    gibts eine möglichkeit aus eine dll ein handle zu exportieren?

    ich habe verschiedene Funktionen die mir z.B Zugangsdaten für eine MYSQL Anbindung hollen und automatisch bei der Datenbank anmelden... Ich würde gerne diese Funktionen in eine DLL auslagern, ich brauche aber ein MYSQL Handle zurück damit ich damit im Hauptprogramm arbeiten kann..
    Ist das möglich?

    Danke...



  • naja einfach ne get-Methode schreiben und als Exportfunktion angeben


  • Mod

    Beachte aber, dass dieses Handle nur in Deinem Prozess eine Gültigkeit hat, evtl. ist es sogar threadafin (dazu kenne ich MYSQL zu wenig).



  • wie meinst du das? Wann verliert denn genau dieses Handle die Gültigkeit?



  • Hmm naja ... hast de eine Funktion oder eine Klasse die sich um den MySQL Kram kümmert? Ich würde 2. nehmen ... und wenn de dann doch des MYSQL Ding haben willst einfach nen getter dafür in die Klasse packen ... funzt problem los ...



  • Martin Richter schrieb:

    Beachte aber, dass dieses Handle nur in Deinem Prozess eine Gültigkeit hat, evtl. ist es sogar threadafin (dazu kenne ich MYSQL zu wenig).

    Dürfte doch kein Prob sein oder? Die DLL ist doch kein eigenständiger Prozess.


  • Mod

    1. der OP hat nicht gesagt wohin er das Handle übergeben will.
    2. Das Problem das das Handle threadafin ist müsste auch gekärt werden, ansonsten muss der OP halt garantieren, dass das Handle im, selben Thread verwendet wird.



  • das Handle soll an das Hauptprogramm, welches die DLL aufruft weitergegeben werden...

    @Devil: Muss ich nicht um Klassen in der DLL zu nutzen, die erweiterte Variante nehmen? Dafür muss ich aber die mfc DLL mitliefern, oder habe ich was falsches verstanden??? Bin nämlich ganz neu bei DLLs...



  • Höö? Nein... eine Library muss doch nicht MFC nutzen um mit Klassen umgehen zu können ... einfach zum exportieren makieren(also die klasse...)...



  • Noch ein Problem: ich wusste jetzt nicht ob ich ein neues Thread aufmachen sollte...

    Ich habe 2 Dlls. Eine davon bindet die andere implizit ein...

    Wenn ich im Hauptprogramm jetzt die Dlls einbinde, ist alles ok, solange ich nicht auf Funktionen zugreifen möchte die entweder CStrings zurückgeben oder CStrings als Übergabeparameter haben. Wenn dies der Fall ist, dann kommt der compiler mit folgende Meldung:

    test(Hauptprogramm) error LNK2019: Nicht aufgelöstes externes Symbol '"public: void __thiscall CDatenbank(Dll Klasse)::readFile(Funktion mit CStrings als Übergabewerten)(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >)" (?readFile@CDatenbank@@QAEXV?CStringT@DV?CStringT@DV?StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@00@Z)', verwiesen in Funktion '"public: virtual int __thiscall test::InitInstance(void)" (?InitInstance@test@@UAEHXZ)'

    Versuche ich nur auf DLL Funktionen zuzugreifen die bool oder int als Rückgabewert haben ist alles kein Problem und alles funktioniert einwandfrei...



  • Naja guck mal noch ob declaration und definition der funktion übereinstimmen ...



  • dies passiert bei alle Funktionen die was mit CStrings zu tun haben... bei alle anderen nicht...


Anmelden zum Antworten