# Dart VM Embedding examples Examples of using Dart VM and executing Dart code from C++ binaries. All examples can run either AOT or Kernel snapshots, depending on which shared library variant they depend on. Since snapshot file formats are unstable, the `dart` binary needs to be of a matching version. The simplest way to ensure this is to build Dart SDK from the same checkout, see [Building Dart SDK](https://github.com/dart-lang/sdk/blob/main/docs/Building.md#building). ## `run_main.cc` This is the simplest example, which just calls a `main` function from a given AOT/Kernel snapshot. It does not handle isolate messages, so it cannot run Dart programs with async functions. To run the example with a Kernel snapshot: ```sh ./tools/build.py --mode=release samples/embedder:run_main_kernel && \ out/ReleaseX64/run_main_kernel out/ReleaseX64/gen/hello_kernel.dart.snapshot. ``` To run the example with an AOT snapshot: ```sh ./tools/build.py --mode=release samples/embedder:run_main_aot && \ out/ReleaseX64/run_main_aot out/ReleaseX64/hello_aot.snapshot. ``` ## `run_two_programs.cc` This example calls a function from one Dart snapshot and then passes the returned string to another Dart snapshot. ## `run_timer.cc` Demonstrates running an isolate event loop in a separate thread. ## `run_timer_async.cc` Demonstrates a custom message scheduler using `std::async`.