123456789101112131415161718192021222324252627282930313233 |
- program simple;
- uses
- ffi;
- function WritePChar(s: PChar): LongInt; cdecl;
- begin
- Writeln(s);
- WritePChar := StrLen(s);
- end;
- var
- cif: ffi_cif;
- args: array[0..0] of pffi_type;
- values: array[0..0] of Pointer;
- s: PChar;
- rc: ffi_arg;
- begin
- args[0] := @ffi_type_pointer;
- values[0] := @s;
- if ffi_prep_cif(@cif, FFI_DEFAULT_ABI, 1, @ffi_type_sint, @args[0]) = FFI_OK then begin
- s := 'Hello World';
- ffi_call(@cif, ffi_fn(@WritePChar), @rc, @values[0]);
- Writeln('Length: ', rc);
- s := 'This is cool!';
- ffi_call(@cif, ffi_fn(@WritePChar), @rc, @values[0]);
- Writeln('Length: ', rc);
- end else
- Writeln('ffi_prep_cif failed');
- end.
|