Hi Robert, Thanks for the quick reply.
> I fail to see where you "embed" 2 assemblies. Do you mean > loading 2 assemblies and executing code from them? Yes, that is what I meant. > Storing a MonoObject* outside the GC-controlled memory area is > a serious bug. You want to store a GC handle of the object > in place of the object itself. See mono's mono_gchandle_* APIs. So I looked at http://go-mono.com/docs/index.aspx?link=xhtml%3adeploy%2fmono-api-gchandle.html and tried to add all the needed mono_gchandle_* method calls, but I'm still getting a (different) NullPointerException: Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object at MyApp.code.op_Implicit (Sigma300.opcode op) [0x00000] at MyApp.Wrapper.compile (System.String instructions) [0x00000] Where did I go wrong this time? Code is below: Best Regards Peter typedef struct ex { // ... MonoClass *klass_a; MonoObject *obj_a; guint32 h_obj_a; // ... MonoClass *klass_b; MonoObject *obj_b; guint32 h_obj_b; } ex_t; int ex_new(int a, int b) { // ... ex->obj_b = mono_object_new(ex->domain, ex->klass_b); // Allocate storage ex->h_obj_b = mono_gchandle_new(ex->obj_b, TRUE); mono_runtime_invoke(ex->method_ctor_b, mono_gchandle_get_target(ex->h_obj_b), NULL, NULL); ex->obj_a = mono_object_new(ex->domain, ex->klass_a); // Allocate storage ex->h_obj_a = mono_gchandle_new(ex->obj_a, TRUE); gpointer args [2]; args[0] = &a; args[1] = &b; mono_runtime_invoke(ex->method_ctor_a, mono_gchandle_get_target(ex->h_obj_a), args, NULL); return 0; } int ex_compile(char * string) { void *args [1]; args [0] = mono_string_new(ex->domain, string); MonoObject *result = mono_runtime_invoke(ex->method_compile, mono_gchandle_get_target(ex->h_obj_b), args, NULL); return *(int*)mono_object_unbox(result); } void ex_delete() { // Free objects mono_gchandle_free(ex->h_obj_b); mono_gchandle_free(ex->h_obj_a); // Free methods mono_method_desc_free(ex->desc_ctor_a); mono_method_desc_free(ex->desc_ctor_b); mono_method_desc_free(ex->desc_compile); // Free mono mono_jit_cleanup(ex->domain); free(ex); } -- View this message in context: http://mono.1490590.n4.nabble.com/Embedding-two-assemblies-in-Mono-gives-emits-NullPointerException-tp2537265p2537333.html Sent from the Mono - General mailing list archive at Nabble.com. _______________________________________________ Mono-list maillist - Mono-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-list