Mombu the Programming Forum

Go Back   Mombu the Programming Forum > Programming > Marshaling big C# structs to a C dll
User Name
Password
REGISTER NOW! Mark Forums Read




Reply Bookmark and Share
1 19th April 10:44
ryancerium
External User
 
Posts: 1
Default Marshaling big C# structs to a C dll



Does anyone know why there's a size limit on the struct you can pass
to a C dll as a ref? Assuming you have a C function that takes a
pointer to a BigType, this will throw:

System.Runtime.InteropServices.MarshalDirectiveExc eption: Internal
limitation: structure is too complex or too large.

///////////////////////////////////////////////////////////////////////////////
in C#

[StructLayout(LayoutKind.Sequential)]
public struct BigType
{
public int a;
public int b;
public int c;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 65536)]
public int[] d;
}

[DllImport("my_dll.dll")]
public static extern int GetBigType(ref BigType bt);

main()
{
BigType bt = new BigType();
GetBigType(ref bt);
}
///////////////////////////////////////////////////////////////////////////////
in C:

typedef struct tagBigType
{
int a;
int b;
int c;
int d[65536];
} BigType;

MY_DLL_API int RequestImage(BigType * const bt);
  Reply With Quote


 


Reply


Thread Tools
Display Modes


Some other forums that might be of your interest : Development, Ada, Apple script, Assembler, Awk, Beos, Basic, C, C++, C#, C# .net, .net, .net frameworks, Asp .net, Clarion, Clipper, Clos, Clu, Cobol, Coldfusion, Delphi, Dylan, Eiffel, Forth, Fortran, Haskell, Hermes, Icon, Idl, Java, Java script, Jscript .net, Jcl, Linoleum, Lisp, Lotus, Limbo, Logo, Ml, Mumps, Oberon, Postscript, Pop, Pl1, Prolog, Python, Ruby, Pascal, Perl, Php, Rebol, Rexx, Sed, Sather, Scheme, Smalltalk, Tcl, Vhdl, Vrml, Visual basic, Visual basic .net, Yorick, Mysql, Omnis, Postgresql, Xbase, Access, Oracle, Adabas, Berkeley, Btrieve, Filemaker, Gupta, Db2, Informix, Ingres, Mssql server, Object, Olap, Paradox, Rdb, Revelation, Sybase, Theory, Dbase, Html, Java script, Css, Flash, Photoshop, Corel script, Xml, Tech, Beos, Gem, Hp48, Hpux, Linux, Mac, Ms-dos, Os2, Palm, Solaris, Ti99, Windows, Xenix, Aos, Chorus, Geos, Inferno, Lantastic, Lynx, Mach, Minix, Netware, Os9, Parix, Plan9, Psos, Qnx, Xinu, Sco, Unix, Aix, Aux, 386bsd, Bsdi, Freebsd, Netbsd, Openbsd, Ultrix, Amd, Intel, Aptiva, Buz, Deals, Homebuilt, Overclocking, Programming, Extra forums


Copyright © 2006 SmartyDevil.com - Dies Mies Jeschet Boenedoesef Douvema Enitemaus -
666