hi, im playing around a bit with c# and dllimports.
im working on debian sid with mono and monodevelop from the debian repos the shared-library is written in C++ using code::blocks compiled with g++ specifically im trying to pass a pointer of my struct to the unmanaged function and write some stuff into it. i used this article as help: http://www.vsj.co.uk/articles/display.asp?id=501 <http://dontknow.me/at/?http://www.vsj.co.uk/articles/display.asp%3Fid=501> my unmanaged function: /****************************************/ struct blub { int size; char data[100]; bool flag; }; ... extern "C" { int getStruct(int structSize, blub * str) { if (structSize != sizeof(blub)) return -1; str->size = 234; strcpy(str->data, "das ist ein text"); str->flag = false; return 0; } }; /****************************************/ c# - calling code /****************************************/ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] public struct INFO { public int size; [MarshalAs(UnmanagedType.ByValArray,SizeConst=100)] public char [] data; public bool flag; } class MainClass { [DllImport ("libmitcode", CharSet = CharSet.Ansi)] private static extern int getStruct(int size, ref INFO str); public static void Main(string[] args) { INFO str = new INFO(); int res = getStruct(Marshal.SizeOf(str), ref str); Console.Out.WriteLine(str.size); Console.Out.WriteLine(str.flag); Console.Out.WriteLine("<< " + new String(str.data) + " >>"); Console.Out.WriteLine(+ res); } } /****************************************/ now this really seems to work, the only problem is the output of monodevelop. executing the program within monodevelop gives me: "234 False << das ist ein text" so the everything thats written to stdout after my string, is truncated. if i execute the program from CLI via "mono myprogram.exe" everything works fine and i got: "234 False << das ist ein text >> 0" i dont know whats causing the difference between the outputs, I also tried to Console.out.Flush(). i dont think thats a monodevelop-issue. so something must be wrong with my code but i have no idea what.. cheers, Norbert _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
