[Mono-list] pinvoke4
Dietmar Maurer
dietmar@ximian.com
02 Oct 2002 09:30:14 +0200
You need to distinguish 2 cases, managed vs. unmanaged code. The data
representation can be different, for example a bool uses one byte in
managed code, but four bytes in unmanaged code. Data types are
automatically converted by the runtime if you do a PInvoke call. So
thats why SimpleStruct uses 8 byte in managed code, but 32 bytes in
unmanaged code.
- Dietmar
On Wed, 2002-10-02 at 04:20, Ferguson, Neale wrote:
In pinvoke4.cs simplestruct is defined as:
public struct SimpleStruct {
public bool a;
public bool b;
public bool c;
public string d;
}
In libtest.c simplestruct is defined as:
typedef struct {
int a;
int b;
int c;
char *d;
} simplestruct
However, when mono_create_trampoline the size of the returned by:
mono_class_value_size (sig->ret->data.klass, NULL) is 8. Why is it not
16? I guess the answer is it should be 16 but I'm doing something
stupid.