2017-08-22 1 views
1

J'ai actuellement une classe managée C++ avec une méthode qui ressemble à ceci ...Comment appeler un C++ géré méthode et col C++ STRUCT De C#

int Calculate(double price, double quantity) 

Je peux appeler cette méthode de ma bibliothèque C# comme ça ...

MyLib.Calculate(1,1) 

Cependant, je veux maintenant passer dans un tableau de struct, qui sont définis dans ma bibliothèque C++ au lieu des primitives de prix et de quantité.

typedef struct my_prices {   
    double quantity;     
    double price;  
} 

Donc, mon C++ signature de la méthode passe alors à cette ...

int Calculate(my_prices prices[]) 

Ce que je me bats maintenant est comment appeler cette gestion méthode C++ et le transmettre le tableau des prix de C# . Je n'arrive pas à créer cette structure en C#, j'ai essayé de définir une version C#, mais je ne sais pas comment je l'ai fait pour la version C++.

J'espère que cela a du sens, je suis un développeur C# avec très peu d'expérience en C++, donc peut-être parler des ordures.

+0

Merci. Je ne contrôle pas la bibliothèque C++ gérée. J'ai besoin de trouver un moyen de C# pour commencer à passer cette structure. – Gavin

+0

@Fildor Ceci est géré C++, n'est-ce pas pour non géré? – Gavin

+0

Dah, juste réalisé, aussi. Je pensais que c'était ce lien que j'avais trouvé, quand j'ai cherché la même chose ... mais ce n'était pas le cas. – Fildor

Répondre

0

Ceci est possible en C++/CLI mais vous avez besoin d'une classe ou d'un type de valeur ref.

value struct my_prices {   
    double quantity;     
    double price;  
} 

int Calculate(array<my_prices> ^prices) 
{ 
    for each (my_prices p in prices) 
    { 
...