mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 00:19:48 +00:00
1755f89092
Adds class modifiers to `dart:ffi`. Migrates all user-defined subclasses of `Struct`, `Union`, `Opaque`, and `AbiSpecificInteger` to be `final class`es. Does not remove the manual error checking, so some errors will show up twice now in language version 3.0. In language version <3.0, only the FFI-specific error will show up. In a follow-up CL, we will try to make the language-errors to show up also <3.0 so that we can remove the FFI-specific errors. Examples of duplicated errors: pkg/analyzer/test/src/diagnostics/subtype_of_ffi_class_test.dart TEST=pkg/analyzer/test/ (for the analyzer) TEST=pkg/front_end/testcases/ (for the CFE) TEST=test/ffi/ (for the VM) CoreLibraryReviewExempt: No need for dart2js to review. Bug: https://github.com/dart-lang/sdk/issues/51683 Change-Id: I2964ceccb7db59fbdaf6be5319f5e4ec2dabe0f3 Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-win-release-try,pkg-mac-release-try,vm-precomp-ffi-qemu-linux-release-riscv64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-ffi-android-debug-arm64c-try,vm-ffi-android-debug-arm-try,vm-reload-rollback-linux-debug-x64-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289223 Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Devon Carew <devoncarew@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Jackson Gardner <jacksongardner@google.com> Reviewed-by: Lasse Nielsen <lrn@google.com> Commit-Queue: Daco Harkes <dacoharkes@google.com> |
||
---|---|---|
.. | ||
docs | ||
example | ||
lib | ||
test | ||
.gitignore | ||
pubspec.yaml | ||
README.md |
Sample code dart:ffi
This is an illustrative sample for how to use dart:ffi
.
Prerequirement
For Windows, Linux, and MacOS, you should make sure, sqlite dev lib installed on your system.
Windows user can download dll from https://www.sqlite.org/download.html
If you do not have any sqlite3.dll or so file, you may found error message:
Unhandled exception:
Invalid argument(s): Failed to load dynamic library (126)
#0 _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:13:55)
#1 new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:22:12)
Building and Running this Sample
Building and running this sample is done through pub.
Running dart run example/main
should produce the following output.
$ dart run example/main
1 Chocolade chip cookie Chocolade cookie foo
2 Ginger cookie null 42
3 Cinnamon roll null null
1 Chocolade chip cookie Chocolade cookie foo
2 Ginger cookie null 42
expected exception on accessing result data after close: The result has already been closed.
expected this query to fail: no such column: non_existing_column (Code 1: SQL logic error)
Tutorial
A tutorial walking through the code is available in docs/sqlite-tutorial.md. For information on how to use this package within a Flutter app, see docs/android.md. (Note: iOS is not yet supported).