2010-03-11 3 views
3

J'ai une DLL avec la signature suivante en C++. Il travaille en C++;C#: - P/invoquer la signature

void Decompress(unsigned char *in,int in_len,unsigned char * out, 
unsigned *o_len,int *e); 

Description du paramètre

  1. * à: Ce tableau d'octets est transmis à fonction.
  2. in_len: Longueur des octets dans le premier paramètre.
  3. * out: Ceci serait la sortie en tant que tableau d'octets.
  4. * o_len: Pas d'octets troisième paramètre
  5. * e: code d'erreur renvoyé

Comment puis-je appeler de C#?

Quelle serait la déclaration P/Invoke?

+0

Voir aussi http://blogs.msdn.com/b/joshwil/archive/2005/08/10/450200.aspx, il semble que 32bit et 64bit CLR peut le faire différemment ... Comment –

Répondre

5
static extern void Decompress(
       byte[] input, 
       int in_len, 
       byte[] output, 
       ref int o_len, 
       out int e); 
+0

Est-ce que la sortie de byte [] serait ramenée à la bonne taille? Quelque chose semble manquer ici pour le marshaller. – TomTom

+0

Merci. Tu m'as sauvé la vie :) – Manjoor

+1

@TomTom: c'est juste un pointeur, c'est-à-dire 'sizeof (void *)'. – leppie

Questions connexes