Passer au contenu principal
Version: bleeding-edge 🩸

C Module

C Module is a Package type that allows extending the functionalities of nanos world Scripting API

C Modules allows you to extend the functionality of the nanos world scripting API on the server side. Actuellement, seuls les modules C sont pris en charge.

attention

Sachez que cette partie de l'API de scripting est actuellement en cours de réalisation et peut être modifiée à tout moment.

attention

Comme il s'agit d'une procédure avancée, des instabilités, voire des crashs, peuvent se produire.

Creating your C Module binaries

To create your own module, fist make sure you have Visual Studio installed with Desktop development with C++ (and CMake) or any other C compiler on Linux.

Premières étapes

  1. Then, clone our example module in your computer to get start with it.
  2. After cloning, you will need to download it's submodules with git submodule update --init --recursive - this will download the module-sdk as a git submodule into deps/ folder automatically.

Comprendre l'exemple

The important file is under src/example.cpp:

src/example.cpp
loading...

Compiling your C Module

Pour compiler l'exemple, suivez les étapes suivantes :

  1. Create a folder called build/: mkdir build.
  2. Enter the build folder: cd build.
  3. Run cmake ...
  4. Build it with cmake --build . --config Release

And now you will have the dlls/libs in build/Release folder.

Creating a C Module Package

First of all, create a new Package of type c-module, and add your .dll and .so files into the Package's root folder. Votre dossier devrait ressembler à cela :

Packages/
└── my-module/
├── Package.toml
├── example.dll
└── ...

Then make sure to add example (or the name of your dll file) to the Package.toml configuration section:

# c module configurations
[c_module]
# list of binaries paths to load (without extension)
binaries = [
"example",
]

Loading and Using your C Module

Now you can load the package you created as usual, by adding it to the Config.toml's list of Packages requirement or by adding it to another Package's Package.toml as dependency as well.

Et dans votre package, vous pouvez le charger et l'utiliser :

-- Calls the module function 'test'
-- Will print 'Hello World' on console
Console.Log(example.test())