dart-sys 0.1.3

Native bindings to the dart native extensions api
Documentation

dart-sys

Native bindings to the dart native extensions sdk.

This crate exposes an api for dart_api.h, which exposes the basic dart native extensions api. This crate used bindgen to generate the bindings to the header.

Requirements
  • Provide a path to the dart sdk using a dart_sdk environment variable.
    • If this variable is not available, will look for either a chocolatey install path, or an entry in the PATH variable which contains dart-sdk in it. This will fall back to the flutter sdk should it not find a dart sdk, but this is not recommended, as it is more difficult to compile using the flutter sdk and it appears it ships a non-standard dart sdk.
Usage

Include the following in your Cargo.toml:

[lib]
crate-type = ["cdylib"]
[dependencies]
dart-sys = "0.1.0"

And follow the guide on the native extensions api page.

Examples

Please visit the examples directory for more information. If there should appear more idiomatic bindings, I will try to keep this updated to link to them.

Note

A few things are not mentioned on the native extensions api page:

  • You should compile using an x64 compiler (eg., [stable|nightly|beta]-x86_64-pc-windows-msvc)
  • You should place the compiled library in the same directory as the root of your dart package (I.E. outside of your lib directory)
  • You should make sure these three coincide:
    • The shared object/dynamic link library name.
    • The NAME in NAME_Init function when writing a sync extension.
    • The name of the import in import 'dart-ext:NAME'.
  • When compiling for Linux, name your shared object libNAME.so.