【发布时间】:2019-01-20 00:56:10
【问题描述】:
在使用Dart 和Flutter 编写的跨平台(Android/iOS)项目中,我需要包含一个C 文件并从该文件调用C 函数。例如,许多最新的加密代码在 Dart 中还不存在。此外,我需要在有返回值的dart函数中调用C代码,所以我不能使用异步方法,而是需要同步调用这些函数。
thread about including C/C++ code in Flutter 似乎建议使用platform channels。有了这些,就可以使用各自平台的本机代码。对于 iOS,Objective C 是 C 的超集,而对于 Android,需要一个额外的层,即 NDK 才能使用 C 代码。这不仅意味着需要编写两次代码(我可以忍受),而且platform channels tutorial 明确表示平台调用是异步的(这对我来说很麻烦)。
我从 2012 年发现了另一个 thread about native extensions in Dart,它展示了如何在 dart 中包含 C 代码,但这似乎只针对命令行应用程序。
如果不存在从 Flutter 同步调用 C 函数的方法,那就太奇怪了。如果您知道如何实现这一点,您可以考虑一个简单的 C 函数作为概念证明,如下所示:
int inc(int num) {
return num + 1;
}
提前致谢!
【问题讨论】:
-
您找到解决方案了吗?