Embedding the Mono runtime, preliminary version
+ Miguel de Icaza (miguel@ximian.com),
+ Paolo Molaro (lupus@ximian.com)
- Miguel de Icaza, Paolo Molaro.
This document describes how to embed the Mono runtime in your
application, and how to invoke CIL methods from C, and how to
embedded in very similar ways so most of what is described
here can be used in either case.
+* IMPORTANT
+
+ This document is now outdated, see:
+
+ http://www.mono-project.com/Embedding_Mono
+
+ For an up-to-date version of this document
+
* Embedding the runtime.
Embedding the runtime consists of various steps:
not interfere with code in other domains. This is useful if
you want to host different applications in your program.
- Then you can load an assembly containing code into the domain:
+ Now, it is necessary to transfer control to Mono, and setup
+ the threading infrastructure, you do this like this:
+
+ void *user_data = NULL;
+
+ mono_runtime_exec_managed_code (domain, main_thread_handler, user_data);
+
+ Where your main_thread_handler can load your assembly and execute it:
+
+ static void main_thread_handler (gpointer user_data)
MonoAssembly *assembly;
layer, so in each file where you use pthread.h you should
include the <gc/gc.h> file.
+ If you can not do this for any reasons, just remember that you
+ can not store pointers to Mono Objects on the stack, you can
+ store them safely in the heap, or in global variables though
+
* Exposing C code to the CIL universe
The Mono runtime provides two mechanisms to expose C code to