如何从c#DLL调用接收c ++中的对象数组

时间:2013-11-09 18:29:36

标签: c# visual-c++ dllimport

我正在使用“混合模式”c ++并调用c#dll中我无法控制的函数。我有所有调用在c#test exe中工作,但是我无法将返回数组的调用转换为混合模式c ++。我不需要在c ++中修改数组,只需阅读它。

我有2个选项在c#中工作,使用c ++工作就足够了。

这是从c#dll

获取数组的基本c#exe调用
CoefficientGroup[] G = Cfg.GetCoefficientGroups();

在我的c ++中,我尝试了许多选项,但没有用 - 它不会编译

CoefficientGroup^[] G = Cfg->GetCoefficientGroups(); etc etc

我也在c#中尝试过这种方法,效果很好

System.Collections.IEnumerator eG = Cfg.GetCoefficientGroups().GetEnumerator();
while (eG.MoveNext())
{
      CoefficientGroup X = eG.Current as CoefficientGroup;
}

但在c ++中,我发现无法在c ++中进行“as”演员编译 - 如下所示

System::Collections::IEnumerator^ eG = Cfg->GetCoefficientGroups()->GetEnumerator();
while (eG->MoveNext())
{
    CoefficientGroup^ X = (CoefficientGroup)eG->Current;
}

1 个答案:

答案 0 :(得分:0)

好的,我自己找到了一个答案。我错过了这个演员的帽子     CoefficientGroup ^ X =(CoefficientGroup ^)eG-> Current; 仍然对阵列声明的答案感兴趣