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

Reply via email to