Según lo que entendí de tu mensaje, perfectamente puedes hacer lo que deseas. Pero antes de adentrarme a la respuesta, solo quisiera aconsejarte que en la próxima fueras un poco más descriptivo en los títulos de los mensajes. Volviendo al tema, si declaras un función en la DLL ésta puede recibir y devolver varios tipos de datos (no sólo cadenas). Pero siempre es preferible utilizar los tipos de datos básicos (punteros y números).
Tomando tu función
GuardarImagen, ésta la puedes declarar dentro de la DLL y en la implementación de la misma no estás limitado al tipo de datos que puedes utilizar. Esto incluye objectos, registros y cualquier otro tipo de datos proporcionados por Delphi o la VCL. Por ejemplo:
Código Delphi
[-]library ejemploLibreria;
uses
.....;
function GuardarImage(LetrasEnImagen: string ; DestinoImage:String); Boolean; stdcall;
var
UnaPicture: TPicture;
begin
try
UnaPicture := TPicture.Create(nil);
....
Return := True;
finally
UnaPicture.Free;
end;
end;
exports GuardarImage
begin
end.
La DLL anterior no debe por qué darte ningún problema. Repito, esa es mi respuesta al que creo es la duda que tienes. No sé si realmente era otra cosa la que estabas buscando.
Saludos,
Chris