ffi_native_must_be_external 진단: 네이티브 함수는 external로 선언해야 해요

ffi_native_must_be_external 진단: 네이티브 함수는 external로 선언해야 해요

Dart 분석기가 내보내는 진단에는 이름이 있어요. ffi_native_must_be_external@Native 애노테이션이 붙은 함수가 external로 선언되지 않았을 때 분석기가 알려주는 컴파일 타임 진단이에요. 네이티브 함수는 몸통 구현 대신 호스트 쪽에 구현이 있다는 의미로 external을 붙여야 해요.

출처: ffi_native_must_be_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);

더 알아보기