On 17.04.2014 18:33, Robert Jordan wrote:
On 17.04.2014 16:55, carmack2000 wrote:
After I followed your code I got this error:
Unhandled exception at 0x100b8c87 in MonoScriptingTest.exe: 0xC0000005:
Access violation reading location 0x00000000.
I'll look into this.

You said 'This is no better than the former non-ref version.' If I
want to
use ref-object to return values (GetPosition), how can I get it ?

C#
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public static extern void GetPosition(string name, ref Vector2 o)

C++: still doing like this ?
void GetPosition(MonoString* ms, MonoObject** mo)
{
         Vector2 pos = *(Vector2*)mono_object_unbox(*mo);
         pos.x = xxxx; // Returned to the caller
         pos.y = xxxx;
}

void GetPosition(MonoString* ms, Vector2 *vector)
{
     vector->x = ...
}

It assumes that you have a C/C++ Vector2 declaration
that is fully layout-compatible with the managed version.

Robert

Additionally, to make this work Vector2 must be a value type,
but it seems to be one because otherwise you won't call
mono_object_unbox on it.

However, the thread's subject might imply that the above code
were suitable for object arguments. Of course it's not,
so caveat emptor.


Robert


_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to