영역 (Managed) 네이티브 영역 (Native) 1) Dart 코드 (사용자 코드) Struct/Pointer 준비, 타입 정의 (typedef) 2) dart:ffi 바인딩 (FFI Binding) • DynamicLibrary.open(...) 로딩 • lookup<NativeFunction<T>> → Dart 함수 포인터로 래핑 3) 메모리/타입 마샬링 (Marshalling) • calloc / malloc 포인터 할당 및 해제 • Dart ↔ C 타입 매핑 (int, double, Utf8, Struct 등) A) 네이티브 라이브러리 (C/C++/Rust 등) 공개 심볼: extern "C" 함수, ABI 고정 B) 스레드/상태 관리 • 재진입성 / 스레드-세이프 고려 • 콜백 시 메인 Isolate로의 전파 설계 C) OS/시스템 호출 • 파일/네트워크/그래픽/디바이스 API • 플랫폼별 빌드(.so/.dll/.dylib) 함수 호출 (Call) 심볼 조회/바인딩 포인터/버퍼 전달 리턴 값/에러 코드 네이티브 → Dart 콜백 (Native → Dart callback) 콜백은 포인터로 등록하고, Isolate 경계/스레드 안전성 주의