B
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.