iT邦幫忙

0

(已解決)Flutter 調用 C++ 失敗

  • 分享至 

  • xImage

程式碼:

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 的原因,引入前測試是成功的。

JamesDoge iT邦高手 1 級 ‧ 2023-01-27 04:22:56 檢舉
已解決 怎解的?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-01-27 04:28:09

在 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;
}

我要發表回答

立即登入回答