swig
Generate bindings between C / C++ code and various high level languages such as Javascript, Python, C#, and more.
TLDR
Generate a binding between C++ and Python
$ swig -c++ -python -o [path/to/output_wrapper.cpp] [path/to/swig_file.i]
Generate a binding between C++ and Go
$ swig -go -cgo -intgosize 64 -c++ [path/to/swig_file.i]
Generate a binding between C and Java
$ swig -java [path/to/swig_file.i]
Generate a binding between C and Ruby and prefix the Ruby module with {{foo::bar::}}
$ swig -ruby -prefix "[foo::bar::]" [path/to/swig_file.i]