Merge pull request #5675 from mono/glib-debug-symbols
[mono.git] / docs / embedded-api
index 1df64744bb6629b10795ada1ee1321a36dc083fc..f44f4ed15cad9abbf2274dc5d336b5e1e7f51e5d 100644 (file)
@@ -1,7 +1,8 @@
        
           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
@@ -9,6 +10,14 @@
        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