Прості приклади використання FFI

Перед зануренням у деталі FFI API, давайте розглянемо кілька прикладів спрощеного використання FFI API у стандартних задачах.

Зауваження :

Для деяких прикладів знадобиться бібліотека libc.so.6. Вони не працюватимуть у системах, де її немає.

Приклад #1 Виклик функції загальної бібліотеки

Loading...

Результат виконання наведеного прикладу:

Привет, мир!

Зауваження :

Зверніть увагу, що деякі функції C потребують певних угод про виклики, наприклад: __fastcall __stdcallили,__vectorcall

Приклад #2 Виклик функції та повернення структури через аргумент

Loading...

Висновок наведеного прикладу буде схожим на:

int(0)
int(1555946835)
object(FFI\CData:struct timezone)#3 (2) {
  ["tz_minuteswest"]=>
  int(0)
  ["tz_dsttime"]=>
  int(0)
}

Приклад #3 Доступ до існуючих змінних C

Loading...

Результат виконання наведеного прикладу:

int(0)

Приклад #4 Створення та модифікація змінної C

Loading...

Результат виконання наведеного прикладу:

int(0)
int(5)
int(7)

Приклад #5 Робота з масивами C

Loading...

Результат виконання наведеного прикладу:

int(25)
int(523776)
int(1024)
int(8192)

Приклад #6 Робота з переліками C

Loading...

Результат виконання наведеного прикладу:

int(0)
int(2)
int(3)