Passing long strings to DLLs by reference

I'm trying to pass an szString to a Delphi 3 DLL and would like the dll to
change it's value, but I can't.

I know that if you're going to pass long strings between an EXE and a
called DLL you need to include the ShareMem unit in both the DLL and the
EXE.  The problem I have is that my calling application isn't written in
Delphi, but in Centura.  I can pass the string (no problem) to the DLL, but
can't seem to modify the string from within the DLL and pass it back to the
calling app.  This was possible under Delphi 1.0.

Does anyone have any battle scars they would like to talk about regarding
this subject?