如何在Flutter(Android)应用程序中使用C++代码?

23

我正在使用Flutter(针对Android)开发一个应用程序,其核心基于仅在C++和Python中开发的库。因此,我想知道如何在我的Dart代码中使用此库(无论是C++版本还是Python版本)。


3
你能否提供一些样例代码(包括Dart和C++),否则@Xavier的回答可能是最好的。 - TruongSinh
4
请看这个由Richard Heap制作的视频,它对我帮助很大。他通过一个示例解释了如何使用dart:ffi在Flutter应用程序中的Dart代码和您正在使用的C++库之间进行交互。我还建议查看这篇文章,以了解在运行Flutter应用程序时如何调试C++代码的方法。 - Facundo Farall
1个回答

14

附加信息(2021-05-05)

来自@FacundoFarall对原问题的评论:

试试看 Richard Heap 的这个视频,它帮助了我很多。他通过一个例子解释了如何通过dart:ffi在Flutter应用程序的Dart代码和您使用的C++库之间进行交互。我还建议查看这个帖子,以了解一种在运行Flutter应用程序时调试C ++代码的方法。

更新(2019-09-10)

今天发布了Dart 2.5(和Flutter 1.9)。 Dart 2.5 中的一个添加是“dart:ffi外部函数接口,可以直接从Dart调用C代码。” 我还没有检查它,但它应该提供与C(和C ++)代码交互的更直接的路径。

另请参阅宣布视频(确认新旧两种方法)。

旧答案(仍然有效)

我会看一下平台通道,它是将Flutter代码与平台本地代码(例如Android上的Java / Kotlin,在iOS中的Objective C / Swift)进行通信的一种方式。从那里,您可以使用常规NDK机制使用C ++库。

您可以查看Flutter平台通道入门指南

也许有更直接的路线,但这是我知道可以工作的方法。


1
我检查了第一个答案,使用Dart编译器是可以的,但是在Flutter中无法使用。我已经为此提出了一个问题 https://stackoverflow.com/q/57900637/2719243 - Vahab Ghadiri
3
谢谢您及时更新答案 :) - Carrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接