ffi_native_unexpected_number_of_parameters 진단: Native 애노테이션의 파라미터 개수가 안 맞아요

ffi_native_unexpected_number_of_parameters 진단: Native 애노테이션의 파라미터 개수가 안 맞아요

Dart 분석기가 내보내는 진단에는 이름이 있어요. ffi_native_unexpected_number_of_parameters@Native 애노테이션의 타입 인자로 쓴 함수 타입의 파라미터 개수와, 실제로 애노테이션이 붙은 함수의 파라미터 개수가 일치하지 않을 때 분석기가 알려주는 컴파일 타임 진단이에요. 시그니처 정보가 실제 함수와 어긋나면 안 돼요.

출처: ffi_native_unexpected_number_of_parameters

본문

설명

분석기는 @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);

더 알아보기