[Mono-dev] Embedded mono; getting in C a pointer from an IntPtr object

Jean-Michel.Perraud at csiro.au Jean-Michel.Perraud at csiro.au
Mon Feb 18 10:46:54 UTC 2013


I have a scenario where some C function is getting a MonoObject (*pobj) that happens to be an IntPtr. As the native pointer is known to be of a certain native type (SEXP), how do I retrieve it? I tried a few things, the latest being:

	type_il = mono_type_get_type(mono_class_get_type(mono_object_get_class(pobj)));
	switch(type_il)  /*MonoTypeEnum*/
	case MONO_TYPE_I          	: // IntPtr, that we assume to be a SEXP as coming from R.NET.					result = (SEXP)(void*)mono_object_unbox(rclr_mono_call_inst_method("ToPointer", pobj, NULL, 0));

I soon get an access violation not long after the function return.

I have a working solution when hosting the Microsoft CLR but this is not directly transferable to Mono given the significantly different APIs.


More information about the Mono-devel-list mailing list