Embedding Djazair in C / C++

Djazair was engineered from day one to be easily embedded inside any host C or C++ application. A single header, #include "djazair.h", gives your application full scripting superpowers.

Minimal Embed Example (main.c)

c
#include "djazair.h"
#include <stdio.h>

static void customPrint(const char *text) {
    printf("[Host App] %s", text);
}

int main(int argc, char **argv) {
    /* 1. Configure the VM */
    DjazairConfiguration config;
    djazair_init_configuration(&config);
    config.writeFn = customPrint;

    /* 2. Instantiate isolated VM */
    DjazairVM *vm = djazair_newVM(&config);

    /* 3. Execute Djazair script string */
    djazair_interpret(vm, "print('Hello from embedded Djazair!')");

    /* 4. Execute script file */
    djazair_interpret_file(vm, "game_logic.dz");

    /* 5. Clean up memory */
    djazair_freeVM(vm);
    return 0;
}

Compiling & Linking

Link your C application against the Djazair static library or compiled object files:

bash
# Linux / macOS
gcc -Isrc/include -Isrc/core main.c build/bin/libdjazair.a -lm -lpthread -ldl -o my_app

# Windows (MinGW)
gcc -Isrc/include -Isrc/core main.c build/bin/libdjazair.a -lm -lws2_32 -lregex -o my_app.exe