Die Symptome sprechen dafür, dass du irgendwo Speicher überschreibst. Eben zum Beispiel durch ein Problem PWideChar <--> PAnsiChar. Bei einer
DLL-Schnittstelle solltest du jedenfalls
immer explizit PWideChar oder PAnsiChar benutzen und nie PChar. Sonst gibt es nur Probleme, weil nicht klar ist was gemeint ist, wenn jemand anderes die Schnittstelle bekommt.
Gibt es irgendwelche Compilerwarnungen?