[Mono-devel-list] Calling object constructor from C

James Lamanna jamesl at appliedminds.com
Thu Feb 5 16:02:21 EST 2004


So I figured out the array problem I posted about earlier, but here's another problem I'd like some help with.

I'm trying to call a constructor for an object from C using the following:

     MonoDomain *domain = mono_domain_get();
     MonoAssembly *assembly = (MonoAssembly *)mono_assembly_get_main();
     MonoClass *na_class = mono_class_from_name(assembly->image,
             "DOL", "NetworkAdapter");
     MonoObject *na_this = mono_object_new(domain, na_class);
     MonoMethod *na_ctor = NULL;
     MonoString *test_string = mono_string_new(domain, "Test String");
     MonoString *test_string2 = mono_string_new(domain, "Test String");
     MonoString *test_string3 = mono_string_new(domain, "Test String");
     MonoString *test_string4 = mono_string_new(domain, "Test String");
     MonoString *test_string5 = mono_string_new(domain, "Test String");
     MonoArray *ip_array, *subnet_array;
     MonoObject *na;
     const char *na_ctor_name = "DOL.NetworkAdapter:.ctor (string,string[],string[],string,string)";
     int i,;
     void **args = g_new( void *, 5);

     for (i = 0; i < na_class->method.count; i++) {
         if (strncmp((char *)mono_method_full_name(na_class->methods[i]),
                    na_ctor_name, strlen(na_ctor_name)) == 0) {
             na_ctor = na_class->methods[i];
             break;
         }
     }

     ip_array = mono_array_new(domain, mono_defaults.string_class, 1);
     mono_array_set(ip_array, gpointer, 0, test_string);
     subnet_array = mono_array_new(domain, mono_defaults.string_class, 1);
     mono_array_set(subnet_array, gpointer, 0, test_string2);

     args[0] = test_string3;
     args[1] = ip_array;
     args[2] = subnet_array;
     args[3] = test_string4;
     args[4] = test_string5;

     na = mono_runtime_invoke(na_ctor, na_this, args, NULL);

The ctor is found ok, the arrays get set up ok, but mono_runtime_invoke always returns null.
Any help?
Thanks.

-- 
James Lamanna
Applied Minds, Inc.
1209 Grand Central Ave.
Glendale, CA 91201
(818) 332-5214



More information about the Mono-devel-list mailing list