如何调用托管C ++方法并从C#中传递C ++ Struct

时间:2017-08-22 13:43:29

标签: c# c++-cli interop

我目前有一个托管C ++类,其方法看起来像这样......

int Calculate(double price, double quantity)

我可以像我这样在C#库中调用这个方法......

MyLib.Calculate(1,1)

但是我现在想传入一个在我的C ++库中定义的结构数组,而不是价格和数量基元。

typedef struct my_prices {          
    double quantity;                
    double price;       
} 

所以我的C ++方法签名然后改为这个......

int Calculate(my_prices prices[])

我现在正在努力解决的问题是如何调用这个托管C ++方法并将其从C#中传递给价格数组。我似乎无法在C#中创建这个结构,我已经尝试定义它的C#版本,但我不知道如何将其代理到C ++版本。

我希望这是有道理的,我是一名C#开发人员,只有很少的C ++经验,所以可能会说垃圾。

1 个答案:

答案 0 :(得分:0)

可以在C ++ / CLI中执行此操作,但您需要ref类或值类型。

value struct my_prices {          
    double quantity;                
    double price;       
} 

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