Hi,<div><br></div><div> 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:</div><div><br></div><div>void *ptr = *(gpointer*)mono_object_unbox (obj);</div>
<div><br></div><div>            Zoltan<br><br><div class="gmail_quote">On Mon, Feb 18, 2013 at 11:46 AM,  <span dir="ltr"><<a href="mailto:Jean-Michel.Perraud@csiro.au" target="_blank">Jean-Michel.Perraud@csiro.au</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
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:<br>

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

                break;<br>
<br>
I soon get an access violation not long after the function return.<br>
<br>
I have a working solution when hosting the Microsoft CLR but this is not directly transferable to Mono given the significantly different APIs.<br>
<br>
Regards<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</blockquote></div><br></div>