DynaLib - Multiplatform SDK


This is a tech demo showing a graphical user interface system that is part of a large multiplatforms development kit called dynalibThe system is totally platform independant and has no source or binary dependecies. See below.




Many features are included in it like:

  • Multi platform system, runs natively on many platforms. 
  • Clean C based Object Oriented Programming system
  • Template-like containers (2 line of codes to make your own storage type (e.g. array) container, see below)
  • Arrays
  • Maps
  • Hashes
  • Sets
  • Lists
  • Stacks
  • Deques
  • Queues
  • Signals/slots system
  • Reference counted memory management
  • Object's reflection-introspection
  • Dynamic/Static properties
  • A framework that allow the creation of simple projects or more complex and GUI rich 3d applications
  • 2d/3d scenegraph management
  • Soft and rigid body dynamics
  • Skinnable/temable graphical user interface (Make your own GUI by adding theme classes) even on a widget level (And as a plugin, sharable on different applications)
  • Simple and powerful Model/View based GUI
  • OpenGL native support. Graphics drivers porting for the GUI is straightforward (The OpenGL native works almost everywhere) 
  • Advanced math library (Native vector/matrix-dense-sparse operations as well as LAPACK, BLAS and thus CUDA and OpenCL binding)
  • A general-multiplatform plugin system that work on different applications (Plugins can be shared)
  • Consistent database engine allow to share objects between different applications
  • A custom build system (Like cmake, scons etc...), just run dlmake on your platform and do a classic make, no code changes or platform conditions, just code it and compile everywhere.
  • More and more!


It feature also very small and fast executables, for real (See the demo).


Actually it run on all major Linux/Unix distributions as well as Windows, Mac OSX, iOS (iPhone, iPod, iPad), AndroidHaiku. Both 32 and 64 bits platform supported.


The SDK is developed in C and feature a simple and clean object oriented system that support class inheritance and functions overloading. Unlike other C libraries, dynalib is clean and have a real compact API. Below a little example:




 * Managing array of integers - dynalib version.

 * dynalib's objects need to be allocated on the heap

 * Note that garbage collection can be used

 * to allow automatic objects destruction.



dlInt value0 = 10, value1 = 12, i;


dlIntArray *intarray = dlNew(dlIntArray);


dlCall_(intarray, pushBack), &value0 _end;

dlCall_(intarray, pushBack), &value1 _end;


for(i=0;i<dlCall_(intarray, getSize) _end;i++)


    dlInt *value = dlCall_(intarray, getAt), i _end;


    printf("Value: %d\n", *value);






 * Managing array of integers - C++ STL version (Dynamic allocation).

 * In C++ objects can be allocated on the stack (Allowing automatic destruction),

 * but to make things clear the sample uses dynamic allocation to show the little

 * difference between the two system. 



std::vector<int> *intarray = new std::vector<int>;





for(int i=0;i<intarray->size();i++)


    printf("Value: %d\n", intarray->at(i));



delete intarray;


Like modern language, e.g. C++, dynalib's main feature is it's ability to base the entire system on a few keywords that act seamless for every OO (Object Oriented) object.



A demo for the various platforms can be dowloaded below:


- Windows (2000, XP, Vista, 7)


- Linux (32 Bit)


- Linux (64 Bit)


- Max OSX 10.6.x (64 Bit)


How to run the demo

You need to extract the content of the compressed file to a directory of your choice. To execute the demo:


Windows: Just double click on the executable file.


Linux: From a shell digit ./dldemo.


Mac OSX: From a shell digit ./run.


dynalib is used in DynAtomic and in the casual commercial game uFall.


For more information please contact us.

Site Map