CodeBlanks Logo Icon CodeBlanks

Özet - FFI

DynamicLibrary, lookupFunction ve Pointer'ı birleştirerek bir native sarmalayıcı yazarsın.

Özet: FFI

Bu grupta dart:ffi'nin temel parçalarını gördük: dart:ffi C interop kütüphanesidir, DynamicLibrary C kütüphanesi yükler, lookupFunction native fonksiyonları bağlar.

Struct C struct'larını temsil eder, Pointer bellek adreslerini yönetir. dart:ffi native platformlarda çalışır, web'de desteklenmez. Bu özette tüm bu parçaları birleştiren bir native sarmalayıcı yazacaksın.

Uygulama Özet: NativeWrapper sınıfı

Bir NativeWrapper sınıfı tanımla: final String library; final String symbol; NativeWrapper(this.library, this.symbol); alan ve kurucu. String describe() => '$library :: $symbol'; metodu. main içinde final w = NativeWrapper('libmylib.so', 'add'); yarat; print(w.describe()); ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // NativeWrapper sınıfını tanımla (library, symbol; describe)
  // bir NativeWrapper yarat; describe() yazdır
}

Örnek çözüm

main.dart
class NativeWrapper {
  final String library;
  final String symbol;
  NativeWrapper(this.library, this.symbol);
  String describe() => '$library :: $symbol';
}

void main() {
  final w = NativeWrapper('libmylib.so', 'add');
  print(w.describe());
}

Beklenen çıktı

libmylib.so :: add

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 DynamicLibrary ne için kullanılır?

  • UI render için
  • Çöp toplama için
  • C kütüphanesi yüklemek için Doğru cevap
  • Paket indirme için

Açıklama: DynamicLibrary C kütüphanelerini yükler.

2 FFI parçalarını eşleştir

Kavram Anlamı
dart:ffi C interop
DynamicLibrary Kütüphane yükleyici
lookupFunction Sembol arama
Pointer Bellek adresi

3 Native fonksiyon sembolü

Soru
final symbol = '____';
print(symbol);
Cevap
final symbol = 'add';
print(symbol);

Açıklama: 'add' yaygın bir C fonksiyon sembolüdür.

Uzman bölümündeki tüm dersler