[Mono-list] question about Array Embedded Within Structure

Pierro enjoylife at tele2.fr
Sun Oct 16 16:34:40 EDT 2005


Hello,
_i use the managed code :_

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]   //.Ansi
       public struct SHA_CTX
       {
           public uint h0;
           public uint h1;
           public uint h2;
           public uint h3;
           public uint h4; //unsigned long en C 32bits
           public uint Nl;
           public uint Nh; //unsigned long en C 32bits
           [ MarshalAs( UnmanagedType.ByValArray, SizeConst=16 )]
           public uint [] data ;
           public int num;
                 }

__and before to use a struct SHA_CTX : i do that :__
SHA_CTX m_ShaCtx = new SHA_CTX();
m_ShaCtx.data = new uint[ 16 ];

__and i use the function : _ _
[DllImport("libeay32")]
public static extern void SHA1_Init( ref  SHA_CTX c);

_
_This code allow me to use the libeay32.so on Linux.
the native code is (sha.h) :_ _

typedef struct SHAstate_st
   {
   SHA_LONG h0,h1,h2,h3,h4;
   SHA_LONG Nl,Nh;
   SHA_LONG data[SHA_LBLOCK];
   unsigned int num;
   } SHA_CTX;

I have used too , the fixed array syntax (technic 2). Both of this 
technics function very well with mono on Linux.
But on Windows, the technic 1 doesn't function with the CLR of 
Microsoft. But this function if i compile the sources with the 
compilateur of Microsoft.
The technic 2 doesn't function in the two cases because , in the IDE  
visual .NET  , the syntax  :
fixed uint  data [16]; // in the struct SHA_CTX

is not accepted .

do you know if there are some incompatibilities with the bytecode 
generated with the compilateur mono and Microsoft ?
Do you know how can i correct my trouble ? i want to exute my code with 
mono in Linux and the Microsoft's CLR in Windows.

Thank you, sorry for my poor english.



More information about the Mono-list mailing list