Zitat:
Bei allen Konventionen mit Ausnahme von cdecl entfernt die Prozedur bzw. Funktion die Parameter vom Stack, sobald die Steuerung zurückgegeben wird. Bei der Konvention cdecl entfernt die aufrufende Routine die Parameter vom Stack, sobald sie wieder die Steuerung erhält.
Ist das vielleicht dein Fehler?
btw: cdecl hat nichts mit mit C++ zu tun, probier mal bei dir stdcall
Edit: Hier siehts du auch dein Problem genau beschrieben
Hier!
...entweder du kümmerst dich selbst drum den Stack wieder in den richtigen Zustand zu kriegen oder du benutzt stdcall.