Tools to turn .NET libraries into native libraries that can be consumed on Android, iOS, Mac, Linux and other platforms.
Перейти к файлу
Chris Hamons 25cd15c5d1 Add documentation for operators and subscripting (#255) 2017-05-04 11:21:30 -05:00
binder [c] Move the generated __method_exception_thrown to support API as mono_embeddinator_throw_exception. 2017-03-28 17:38:14 +01:00
build [objc] Merge master. (#46) 2017-04-02 13:37:16 -05:00
docs Add documentation for operators and subscripting (#255) 2017-05-04 11:21:30 -05:00
external Bump to latest IKVM. 2017-03-22 20:58:23 +00:00
objcgen [objc] Clarify (with comment) that the `_object` field (even if public) is off limit (#264) 2017-05-04 11:59:40 -04:00
samples [objc][samples] Add Makefile to download UnitsNet nuget and create a native macOS dylib for the library (#257) 2017-05-03 16:31:43 -04:00
support [objc] Correctly expose types that conforms to (bound) protocols (#216) 2017-05-01 07:52:55 -04:00
tests Handle Equality Operators Better (#247) 2017-05-03 11:05:44 -05:00
.gitignore [objc][samples] Add weather sample (#134) 2017-04-19 11:17:45 +02:00
.gitmodules Change Xamarin.Android.Tools sub-module to use HTTPS Git URL. 2017-01-25 13:46:12 +00:00
.travis.yml [objc] Merge master. (#46) 2017-04-02 13:37:16 -05:00
LICENSE Pushed initial work-in-progress code for managed-to-native bindings generator. 2016-07-25 16:34:57 +01:00
README.md [objc][README] Recommend usage of objcgen.exe instead of MonoEmbeddinator4000.exe (#92) 2017-04-11 08:33:38 +02:00
e4000-logo.png Add Logo 2016-11-09 15:13:18 -08:00
generator.sln [objc] Add support for NSObject subclasses by reusing the output from the static registrar. (#199) 2017-04-27 16:11:39 +02:00

README.md

Embeddinator-4000 Logo

windows-vs-x86 osx-clang-x86
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