wie bekomme ich daten aus ner .dll



  • ich habe ein problem aus einer .dll in der ein thread variablen erzeugt diese variablen in die rufende .exe zu bringen.

    habe zwei projekte mit msdev erstellt

    dll.cpp
    dll.h

    exe.cpp

    in der dll.h habe ich die variable mit

    __declspec( dllexport ) int variable;

    declariert und dll.h in dll.cpp und exe.cpp importiert

    eigendlich sollte ich doch meine daten aus der dll.cpp
    in die exe.cpp bringen können.

    WAS MACHE ICH FALSCH !! 😕

    vielen dank für die hilfe
    gerd schönweitz



  • Abgesehen davon das ein Thread in einer DLL nicht startet ohne das man ihn aufruft: Exportiere nicht Variablen sondern Methoden welche den Inhalt der Variablen zurückgibt.



  • hi
    der thread ist nicht das problem ... der startet !
    und auch das übergeben und erhalten von variablen und adressen mit dem aufruf einer funktion (methode) klappt .... aber ich brauche den wert einer variable die in der .dll gefüllt wird für die rufende .exe

    konkret:
    die .dll überprüft einen microcontroller, der etwas ausführt und erzeugt eine variable mit dem inhalt 'controllerBusy = true/false', um mit einen bestehenden programm das nicht von mir ist zusammen zu arbeiten (dieses programm ruft die .dll), muss ich eine globale variable zur verfügung stellen die den zustand des controllers angibt.

    für hilfe währe ich echt dankbar !! 😕

    gerd schönweitz



  • #pragma data_seg ("shared")
    
    char globstring[256][64] = {'\0'};
    #pragma data_seg()
    #pragma comment(linker,"/SECTION:shared,RWS")
    


  • hi
    hab das codefragment in meine dll.h gesetzt und er schreibt auch schön in der .dll und in der .exe werte rein .... aber leider schreibt er sie in jeweils verschidene speicherbereiche 0x1013a000 in der .dll und in 0x0041a000 bei der .exe .... aus diesen grund verliert er wohl die daten dann wieder
    ich mach irgendwas wohl noch falsch 😞
    gerd



  • Abgesehen davon das man einen GETTER und SETTER dafür einbauen muss solltest du das dann Syncronisieren.

    Um auf diese Daten zuzugreifen müssen bei Programme auf die gleiche DLL (Physische DLL-Datei) zugreifen.

    Lädt das eine Programm die DLL aus dem z.B. System32 und die andere aus einem anderen ordner dann haben bei einen anderen SPeicherbereich



  • hi
    ich möcht die variablen nur mit dem einen rufenden programm austauschen und da auch nur von der .dll zur .exe
    wie kann ich die adressbereiche zwischen .dll und .exe syncronisieren ?
    gerd


Anmelden zum Antworten