程式碼:
final DynamicLibrary nativeAddLib = Platform.isAndroid
? DynamicLibrary.open("libnative-lib.so")
: DynamicLibrary.process();
final int Function(int x, int y) nativeAdd = nativeAddLib.lookup<NativeFunction<Int32 Function(Int32, Int32)>>("native_add").asFunction();
出現錯誤:Invalid argument(s): Failed to lookup symbol 'native_add': undefined symbol: native_add
試著加過 flutter_libserialport:git: https://github.com/jpnurmi/flutter_serial_port
,但沒成功。
不知道是不是引入 OpenCV Library 的原因,引入前測試是成功的。
在 C++ 中將函數導出為公共符號有兩種方法:使用 extern "C" 和使用 __attribute((visibility("default")))。
第一種方法:使用 extern "C"
extern "C" {
int native_add(int x, int y) {
return x + y;
}
}
第二種方法:使用 __attribute((visibility("default")))
int __attribute((visibility("default"))) native_add(int x, int y) {
return x + y;
}