跳到主内容
Flutter
文章阅读

flutter windows配置CMakeLists.txt调用dll库

2025/12/1690 次阅读2 分钟

新建一个插件


flutter create --template=plugin_ffi ldd_tsclib --platforms windows

ldd_tsclib: 插件名称

引入dll文件

把dll文件拷贝到插件的根目录下的windows文件夹内 image.png

配置cmakelists.txt

编辑ldd_tsclib/windows/CMakeLists.txt,在末尾加入


set(ldd_tsclib_bundled_libraries
  "${CMAKE_CURRENT_SOURCE_DIR}/TSCLIB.dll"
  PARENT_SCOPE
)

ldd_tsclib_bundled_libraries改为: 项目名称_bundled_libraries

配置完编译的时候会把dll自动添加进exe运行文件的同级目录下

配置结束

在Dart中使用

加载dll文件


final DynamicLibrary _tsclib = DynamicLibrary.open("TSCLIB.dll");

调用dll里面的函数


typedef ABOUT_NA = Void Function();//C类型定义
typedef ABOUT = void Function();//dart类型定义

///调用示例,如果about函数存在
void about() {
  final fun = _tsclib.lookupFunction<ABOUT_NA, ABOUT>("about");
  fun();
}

传参示例,接收字符串类型,String.toNativeUtf8() 是ffi包自带的扩展方法


typedef OPEN_PORT_NA = Void Function(Pointer<ffi.Utf8> str);
typedef OPEN_PORT = void Function(Pointer<ffi.Utf8> str);

///打开打印机
void openport(String printer) {
  final fun = _tsclib.lookupFunction<OPEN_PORT_NA, OPEN_PORT>("openport");
  fun.call(printer.toNativeUtf8()); // dart 的字符串转成c能识别的Pointer<ffi.Utf8>类型
}

返回顶部