wenn es C ist, lass es so und mache eine
DLL.
Zu deinem Stringproblem habe ich auch schon was geschrieben... vereinfacht: du kannst PAnsiChar auf Delphi-ShortStrings in C als (Pointer)ArryOfBytes mit Länge in [0] und Zeichen ab [1..] sowie im voraus fixem Speicherbereich, also einfach Länge 1..255 verstehen. All das gilt so vereinfacht aber nur für NonUnicode.
Ansonsten ist ein PAnsiChar auf einen C-String in Delphi ein PArrayOfByte ohne direkt bekannte Länge, da hier das erste NULL-Zeichen die das Ende und damit die Länge definiert. Auch das gilt so vereinfach nur für NonUniCode.