ffi_native_unexpected_number_of_parameters 진단: Native 애노테이션의 파라미터 개수가 안 맞아요
ffi_native_unexpected_number_of_parameters 진단: Native 애노테이션의 파라미터 개수가 안 맞아요
Dart 분석기가 내보내는 진단에는 이름이 있어요. ffi_native_unexpected_number_of_parameters는 @Native 애노테이션의 타입 인자로 쓴 함수 타입의 파라미터 개수와, 실제로 애노테이션이 붙은 함수의 파라미터 개수가 일치하지 않을 때 분석기가 알려주는 컴파일 타임 진단이에요. 시그니처 정보가 실제 함수와 어긋나면 안 돼요.
본문
설명
분석기는 @Native 애노테이션의 타입 인자로 쓰인 함수 타입의 파라미터 개수가, 애노테이션이 붙은 함수의 파라미터 개수와 일치하지 않을 때 이 진단을 만들어요.
예시
아래 코드는 @Native 애노테이션의 타입 인자로 쓴 함수 타입(Void Function(Double))의 인자가 하나인데, 애노테이션이 붙은 함수(void f(double, double))의 인자가 두 개라서 이 진단을 만들어요.
import 'dart:ffi';
@Native<Void Function(Double)>(symbol: 'f')
external void f(double x, double y);
흔한 해결 방법
애노테이션이 붙은 함수가 맞다면, @Native 애노테이션의 함수 타입을 그에 맞게 고쳐요.
import 'dart:ffi';
@Native<Void Function(Double, Double)>(symbol: 'f')
external void f(double x, double y);
@Native 애노테이션의 함수 타입이 맞다면, 애노테이션이 붙은 함수를 그에 맞게 고쳐요.
import 'dart:ffi';
@Native<Void Function(Double)>(symbol: 'f')
external void f(double x);