Writing bindings for the exiv2 library
There are thousands of libraries already written in C/C++ and used in practice, sometimes for decades. Therefore, it doesn't make sense to try to write everything from scratch. Of course, if you want to run your code in the browser, you have to rewrite it into Dart, but in cases where you're only interested in server-side scripting, you can reuse existing C/C++ code, wrap it with a small native extension, and use it in Dart.
In this example, we'll use exiv2
, which is a library written in C++ that can read and modify the EXIF metadata from pictures. This is, for example, what camera vendor and model you used, the exposure time, and so on:
// main.cpp // Header file is a part of exiv2 source code. #include "exiv2.hpp" void GetExifRecord(Dart_NativeArguments arguments) { Dart_EnterScope(); const char *filename; const char *tag; Dart_StringToCString( Dart_GetNativeArgument(arguments, 0), &filename); Dart_StringToCString...