在windows开发中可能需要引入一些dll文件,在flutter中最简单的方式就是直接把dll文件复制到build/windows/runner/Debug目录下就可以在debug模式下引入:
比如我这里引入的是一个helloword.dll,里面有一个void Hello()方法
final DynamicLibrary nativePointerTestLib = DynamicLibrary.open("helloworld.dll");
final void Function() helloWorld = nativePointerTestLib
.lookup<NativeFunction<Void Function()>>('Hello')
.asFunction();
// 调用方法
helloWorld();
但是这样每次都需要手动复制,非常麻烦。
比较简单的方法是使用官方推荐的方法,放到CMakelists.txt里面:
codelabs.developers.google.com/codelabs/fl…
创建项目:
flutter create --template=plugin_ffi --platforms=android,ios,linux,macos,windows ffigen_app
生成的项目目录下,有一个windows文件夹,里面有一个 CMakeLists.txt
, 直接运行example/lib
的main.dart
, 会自动生成预设的ffigen_app.dll
文件。此时如果我们需要引入别的dll文件,则只需要修改 CMakeLists.txt
, 在下面添加:
set(ffigen_app_bundled_libraries
"${CMAKE_CURRENT_SOURCE_DIR}/helloworld.dll"
PARENT_SCOPE
)
(假设helloworld.dll和CMakeLists同级)
保存后再重新运行,此时引入的helloworld.dll就会自动被拷贝到 Debug
目录下。如果运行 flutter build windows
则会被自动拷贝到 Release
目录下。
参考文章: