> On 9 Nov 2015, at 00:22, sunsflower <[email protected]> wrote:
> 
> 
> and how can I pass a pointer to mono?...
> <code>
> stuct test
> {
>        int index;
>        string name;
> };
> 
> 
> MonoMethod* method = mono_class_get_method_from_name(klass, "testfunc", 2);
> MonoException* ex;
> typedef int(__stdcall *func)(MonoObject*, test*, MonoException**);
> func f1 = (func)(mono_method_get_unmanaged_thunk(method));
> test t1;
> </code>
> something like this? but C# won't accept a pointer except in unsafe context.
> is there some other way of doing this - to read from a pointer to a struct
> in C# and change it? or should I just pass the struct as a value?
> 
I am not quite sure what your intention is here.
The managed struct is of course a value type.
Try passing your struct reference like so (MonoObject *)&x
I think that a struct returned by a method is a MonoObject * that you can 
access using normal field and property accessors.

If curious, you could glance at the following - it’s Obj-C not C++ but it might 
help.
https://github.com/ThesaurusSoftware/Dubrovnik/blob/master/Framework/XCode/Utility/DBInvoke.m
https://github.com/ThesaurusSoftware/Dubrovnik/blob/master/Framework/XCode/Dubrovnik%20Unit%20Tests/DBUReferenceObject.m

I agree that Mono is great but the embedded API is quite opaque and the headers 
and overall level of documentation is minimalist to say the least.
It does make for quite a steep learning curve but the community is genuinely 
helpful.


_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to