70e5a0f791
- ImplementMethod now only takes one argument - Remove Invalidation hack - https://github.com/mono/Embeddinator-4000/issues/370 - Semi implement freezing. We now only cache after freezing. Later we can look at improved permissions or exceptions - https://github.com/mono/Embeddinator-4000/issues/371 |
||
---|---|---|
binder | ||
build | ||
docs | ||
external | ||
objcgen | ||
samples | ||
support | ||
tests | ||
tools/diff | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
LICENSE | ||
README.md | ||
e4000-logo.png | ||
generator.sln |
README.md
windows-vs-x86 | osx-clang-x86 |
---|---|
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).
The project is still under heavy development. Usage under mission-critical production scenarios is not advised. Please report any bugs or suggestions so we can improve the tool.
Community
Feel free to join us at our #managed-interop Gitter discussion channel.
Building
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.
Usage
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 MonoEmbeddinator4000.exe
.
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 language: c, c++, obj-c (defaults to c)
--platform=VALUE target platform: android, windows, macos, ios, watchos, tvos
-o, --out=VALUE output directory
-c, --compile compiles the generated output
--dll, --shared compiles as a shared library / DLL
--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