X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=docs%2Fembedded-api;h=f44f4ed15cad9abbf2274dc5d336b5e1e7f51e5d;hb=HEAD;hp=1fd739ae2ba82eda4fbb23486982cd6fabf74f7d;hpb=7ff8f29ff29fa3f08ef305ac43ef079097323286;p=mono.git diff --git a/docs/embedded-api b/docs/embedded-api index 1fd739ae2ba..f44f4ed15ca 100644 --- a/docs/embedded-api +++ b/docs/embedded-api @@ -3,12 +3,21 @@ Miguel de Icaza (miguel@ximian.com), Paolo Molaro (lupus@ximian.com) + This document describes how to embed the Mono runtime in your application, and how to invoke CIL methods from C, and how to invoke C code from CIL. Both the JIT and interpreter can be 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: @@ -69,7 +78,16 @@ 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; @@ -112,6 +130,10 @@ layer, so in each file where you use pthread.h you should include the 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