Iteratoren in Dll, die mit MinGW erstellt wurde
-
Hallo,
Bin ratlos.
Der Code von der Dll wird völlig Fehlerfrei compiliert (mit MinGW Studio).Wenn die Dll dann in einer exe aufgerufen wird, gibt's nen schönen Fehler: EAccessViolation
(exe wurde mit C++ Builder 6 erstellt)Ich hab den Fehler auf die Iteratoren einer "double ended queue" eingrenzen können:
EXTERN_C DECLSPEC_EXPORT void _calculate(const std::deque<DATA_LINE *> * Values, std::deque<double> * TargetList) { using namespace std; unsigned int counter = 0; for (deque<DATA_LINE *>::const_iterator i = Values->begin(); i!=Values->end(); i++) { i++; // hier krachts, wenn diese Zeile auskommentiert wird, läuft alles wunderbar // aber wieso geht's dann im Schleifenheader ??? // sowas geht z. B. auch ned: i-1 ... } }
Wenn ich die DLL aber mit C++ Builder erstelle, dann läuft alles wunderbestens...
thx
Martin
-
DLLs sind für C++ nicht geeignet. Mache es so das du nur C-Datentypen als Parameter der _calculate-Funktion nimmst, oder verzichte auf die DLL.
-
gar nicht gut,
najo, dann muss ich mir meine eigenen Listen bauen.Btw: im C++ Builder kann man aber auswählen, ob man eine C oder eine C++ Dll erstellen will...
mfg
Martin
-
wenn die deque im borland c++ builder intern einen anderen aufbau hat als im mingw compiler dann krachts natürlich.
-
kracher schrieb:
wenn die deque im borland c++ builder intern einen anderen aufbau hat als im mingw compiler dann krachts natürlich.
du Fuchs...
An diese Möglichkeit hab ich noch gar ned gedacht *doh*
thx
Martin
-
lol. jetzt weiß ich gar nicht ob das ernst oder ironisch gemeint ist.
tippe mal auf ironie.
-
na,
war ausnahmsweise ned ironisch gemeint
-
Falls das wirklich das Problem ist dann könntest du ja z.B. STLPort benutzen. Das ist eine STL die du auf sehr vielen Compilern benutzen kannst.