DLL und VB Datenverwaltung



  • Hallo,

    ich schreibe zur Zeit an einer DLL. Diese DLL soll unter anderen Bilder verwalten z. B. durch Hinzufügen. Sie wird aus VB aufgerufen.

    Der Ablauf ist im Moment folgender:

    DLL:

    void dlladd(BYTE* data)
    {
       vector<CBILD*> bilder;
       bilder.push_back(new CBILD(data));
    }
    

    Ich habe also ein vector mit Zeigern auf allokierte Bilder-Objekte.

    Diesen Vector muss ich nun irgendwie im Speicher halten, außerdem brauche ich einen Zeiger auf diesem.
    Warum? Sobald die dlladd() aus VB aufgerufen wurde, soll beim nächsten Aufruf von dlladd() weiterhin auf die bereits hinzugefügten Daten zugegriffen werden.

    Meine Idee ist daher immer einen Zeiger in VB mitzuschleppen, der auf den Vector mit den Bilddatenzeigern zeigt.

    VB: (PSEUDOCODE)

    dim pointer as long
    
    sub form_load()
       dllinit(pointer)
    end sub
    
    sub load_image()
       data = loadpicture;
       dlladd(pointer, data)
    end sub
    

    DLL: (PSEUDOCODE)

    void dllinit(long* PointerToVector)
    {
       PointerToVector = new vector<CBILD*> bilder;
    }
    
    void dlladd(long* PointerToVector, BYTE* data)
    {
       PointerToVector->push_back(new CBILD(data));
       PointerToVector = bilder;
    }
    

    Mein Problem ist, den Zeiger von den Vector zu bekommen und diesen in eine Variable zu speichern, die man in VB benutzen kann.

    UPDATE:
    Konkret besteht das Problem bei der Initialisierung:

    void dllinit(long* PointerToVector)
    {
    	vector<CBILD>& BildVector = new vector<CBILD*>;
    	PointerToVector= long(BildVector);
    }
    

    Ganz gleich wie, diese beiden Zeilen muss der Kompiler schlucken.


Anmelden zum Antworten