ffi_native_must_be_external 진단: 네이티브 함수는 external로 선언해야 해요
ffi_native_must_be_external 진단: 네이티브 함수는 external로 선언해야 해요
Dart 분석기가 내보내는 진단에는 이름이 있어요. ffi_native_must_be_external는 @Native 애노테이션이 붙은 함수가 external로 선언되지 않았을 때 분석기가 알려주는 컴파일 타임 진단이에요. 네이티브 함수는 몸통 구현 대신 호스트 쪽에 구현이 있다는 의미로 external을 붙여야 해요.
본문
설명
분석기는 @Native 애노테이션이 붙은 함수가 external로 표시되지 않았을 때 이 진단을 만들어요.
예시
아래 코드는 함수 free가 @Native 애노테이션이 붙었는데 external로 표시되지 않아서 이 진단을 만들어요.
import 'dart:ffi';
@Native<Void Function(Pointer<Void>)>()
void free(Pointer<Void> ptr) {}
흔한 해결 방법
함수가 네이티브 함수라면 반환 타입 앞에 external 수정자를 추가해요.
import 'dart:ffi';
@Native<Void Function(Pointer<Void>)>()
external void free(Pointer<Void> ptr);