My situation is this: I've got a C library that has a lot of UTF-16 inputs and outputs. The C type is always "unsigned short*" or "const unsigned short*" (because clearly wchar_t* isn't portable because it's 4 bytes on linux). All of my C# code has the "[MarshalAs(UnsignedType.LPWStr)]" attribute specified.
It works properly in windows with MS .NET, but doesn't work for me in linux with mono. I've verified in gdb that the C library is returning the correct string, but immediately after the C dll returns and mono does the LPWStr marshaling the string is total garbage characters. I am under the impression from previous posts that 2-byte UTF-16 should marshal properly to mono with the LPWStr attribute. In fact it looks like some of the gdiplus calls use that same thing and work... any ideas what I can check on because mine doesn't? For more clarification my C library has a function signature like this: void my_function(unsigned short* myArg); And my C# code looks like this: [DllImport("myCLib")] public static extern void my_function([MarshalAs(UnmanagedType.LPWStr)] string myArg); Thanks in advance for any ideas on what to check! Dan Maser
_______________________________________________ Mono-list maillist - Mono-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-list