[Mono-dev] Embedded mono; getting in C a pointer from an IntPtr object
Zoltan Varga
vargaz at gmail.com
Mon Feb 18 11:52:08 UTC 2013
Hi,
If you have an IntPtr object, you can simply unbox it, that will return a
pointer to the value boxed inside the object, i.e., then you can
dereference it to get the value:
void *ptr = *(gpointer*)mono_object_unbox (obj);
Zoltan
On Mon, Feb 18, 2013 at 11:46 AM, <Jean-Michel.Perraud at csiro.au> wrote:
> Hi,
>
> 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));
> break;
>
> 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.
>
> Regards
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20130218/25ceba53/attachment.html>
More information about the Mono-devel-list
mailing list