[Mono-list] Trouble with utf-16 marshaling
Maser, Dan
Dan.Maser at inin.com
Fri Jun 29 10:12:51 EDT 2007
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20070629/baefbfed/attachment.html
More information about the Mono-list
mailing list