FFI 콜백에 예외 반환값이 없는 경우
FFI 콜백에 예외 반환값이 없는 경우 (missing_exception_value)
Pointer.fromFunction이나 NativeCallable.isolateLocal를 호출할 때, 반환되는 타입이 void도 Handle도 Pointer도 아니라면 예외 반환값(두 번째 인자)을 넣어야 하는데 그게 없을 때 나오는 진단이에요.
본문
이 진단은 Pointer.fromFunction 또는 NativeCallable.isolateLocal 메서드를 호출할 때, 그 호출에서 반환될 타입이 void도 Handle도 Pointer도 아닌데 두 번째 인자(예외 반환값)가 없을 때 분석기가 만들어내요.
FFI에 대해 더 알고 싶다면 C interop using dart:ffi 문서를 참고하세요.
예시
아래 코드는 f가 반환하는 타입이 8비트 정수(Int8)로 기대되는데, fromFunction 호출에 예외 반환 인자가 없어서 이 진단이 나와요.
import 'dart:ffi';
int f(int i) => i * 2;
void g() {
Pointer.fromFunction<Int8 Function(Int8)>(f);
}
해결 방법
예외 반환 값을 추가해 주세요.
import 'dart:ffi';
int f(int i) => i * 2;
void g() {
Pointer.fromFunction<Int8 Function(Int8)>(f, 0);
}
더 알아보기
- C interop using dart:ffi — Dart에서 C 코드와 연동하는 법을 다루는 공식 가이드예요.