Embeddinator-4000 is a tool to turn existing .NET libraries into libraries that can be consumed by other languages.
It is a tool that takes a .NET assembly and generates the necessary glue to surface the .NET API as a native API. The goal is to surface .NET libraries to all ecosystems where Mono/Xamarin run, and for each platform we provide an interface that is native to that platform as well as the tools needed to turn a .NET library into something that can be consumed on that platform.
This is a work in progress, the initial goals for this project are to surface .NET to C, C++, Objective-C (across the various Apple platforms) and Java (Android and regular Java).
Check out our documentation to get started
Feel free to join us at our #managed-interop Gitter discussion channel.
Clone this repository and initialize/update submodules as well as solution depends on them.
Open the solution in
build/MonoEmbeddinator4000.sln with Visual Studio or Xamarin Studio and press F7.
To generate bindings for a managed library you invoke the
MonoEmbeddinator4000.exe command line tool.
Important: please follow the instructions in
objcgen's README to use the new and improved Objective-C generator (will eventually fusion with
If you do not pass any arguments, you will get a list of the tool options:
MonoEmbeddinator4000.exe [options]+ ManagedAssembly.dll Generates target language bindings for interop with managed code. --gen=VALUE target generator (C, C++, Obj-C, Java) -p, --platform=VALUE target platform (iOS, macOS, Android, Windows) -o, --out, --outdir=VALUE output directory -c, --compile compiles the generated output -d, --debug enables debug mode for generated native and managed code -t, --target=VALUE compilation target (static, shared, app) --dll, --shared compiles as a shared library --static compiles as a static library --vs=VALUE Visual Studio version for compilation: 2012, 2013, 2015, Latest (defaults to Latest) -v, --verbose generates diagnostic verbose output -h, --help show this message and exit
To generate C bindings for a
Xamarin.Foo.dll assembly you would call
the tool like:
MonoEmbeddinator4000.exe -gen=c -out=foo Xamarin.Foo.dll