如何使用C++开发桌面应用程序的自定义插件,以及如何在我的Flutter代码中使用C++语言并访问它。是否有适用于在Dart语言中访问C++程序的文档?
如何使用C++开发桌面应用程序的自定义插件,以及如何在我的Flutter代码中使用C++语言并访问它。是否有适用于在Dart语言中访问C++程序的文档?
您最好的选择是使用Dart VM的FFI(外部函数接口)来绑定C API。您可以标记您的C++代码中需要“导出”到C语言的函数如下所示:
extern "C" void myExportedFunction() {}
extern "C"
用于编译时防止函数名被混淆。
你可以将你的 C++ 代码编译为一个动态库(在 Linux 上是 .so,Windows 上是 .dll,Mac OS 上是 .dylib),然后进行加载。调用 myExportedFunction
的代码示例如下:
import 'dart:ffi';
DynamicLibrary loadLibrary() {
return DynamicLibrary.open('path/to/my/library.extension'); // extension would be .so for linux, .dll for windows and so on
}
void executeMyFunction() {
final lib = loadLibrary();
final myFunction = lib.lookup<NativeFunction<Void Function()>>('myExportedFunction').asFunction();
myFunction();
}