与另一个类中的另一个函数互操作

时间:2011-07-28 08:02:18

标签: c# c++ interop

我必须通过互操作从.Net代码调用C ++代码。

我只是想知道是否还有其他类中的另一个函数互操作?例如,在C ++中,我有以下实用程序类:

 class  ConvertUtility
{
    public:
        static void Convert(PointList &ptList, const list<pts> &pts);


};

我希望通过互操作直接从.Net调用它,任何想法如何做到这一点?

注意:这里是a related question询问如何使用命名空间来区分不同的方法。但是这一次,我想要与命名空间无关,只有一个具有静态功能的类。

编辑:鉴于C包装器中已经有太多函数(例如,可从.Net调用的静态extern“C”函数,没有类或命名空间),我不想引入额外的一层包裹,如果我可以帮助它。

1 个答案:

答案 0 :(得分:2)

在您链接的相关问题中,Ben Voigt在评论编写C ++ / CLI包装器的建议中说:

  

这是正确的答案。 P / Invoke只能用于调用   具有“C”接口的函数,这意味着extern“C”以防止名称   修改,以及对参数和返回类型的限制。

由于该方法是静态的,我看到两个选项:

  1. 编写一个可以使用P / Invoke调用的简单C包装函数。
  2. 编写可以直接从C#调用的C ++ / CLI包装器。