2014-08-29 8 views
-2

Je suis en train de programmer une petite application pour parler avec un périphérique externe via API (les deux en 64 bits). Je suis la méthode suivante à partir du guide, je suis en train d'utiliser:C# - return type int * à partir du code non managé

int* GetRevision(void* cu_ptr, int num) 

J'ai essayé de faire PinVoke Motif:

[DllImport("ABCAPI.dll")] 
public static extern IntPtr GetRevision(IntPtr cu_ptr, int num); 

Et j'ai essayé de copier le IntPtr à un tableau int:

var check = GetRevision(device_cu_ptr, 1); 
int[] arr = new int[10]; 
Marshal.Copy(check, arr, 0, arr.Length); 

Existe-t-il un meilleur moyen de convertir un INT* en Int[] en C#? Ou pourrait-il y avoir une erreur dans mon code?

+3

Votre dernière phrase fait allusion au fait que ce code ne fonctionne pas. Si tel est le cas, pouvez-vous expliquer exactement pourquoi ce n'est pas? – CodeCaster

+0

duplication possible de [Pointeurs en C# pour faire tableau int?] (Http://stackoverflow.com/questions/2546706/pointers-in-c-sharp-to-make-int-array) –

+0

@PaulZahra: Trouvé qu'un aussi, mais non, pas un dupe. C'est principalement sur le malentendu, pas comment le réparer. –

Répondre

0

Ok, semble Marshal.Copy est le bon moyen de convertir ces types de données.

var check = GetRevision(device_cu_ptr, 1); 
int[] arr = new int[10]; 
Marshal.Copy(check, arr, 0, arr.Length); 
Questions connexes