Book Image

Dart Essentials

Book Image

Dart Essentials

Overview of this book

Table of Contents (16 chapters)
Dart Essentials
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

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...