Making a dynamic/shared library with Odin is really simple, especially to be called from Python using ctypes
.
// example/foo.odin
package example
@export
add :: proc "c" (a, b: i32) -> i32 {
return a + b
}
The above code will produce a procedure named add
that takes two parameters of type i32
and returns an i32
.
To compile this to a dynamic library, it is as simple as:
odin build example -build-mode:dll
This will produce a .dll
on Windows or a .so
on *nix systems.
Fire up Python and see if you can call your newly created Odin procedure!
import ctypes
from ctypes import c_int32
lib = ctypes.CDLL("example.dll")
lib.add.restype = c_int32
lib.add.argtypes = [c_int32, c_int32]
print(lib.add(123, 456)) # 579