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

本文关键字:另一个 函数 互操作 | 更新日期: 2023-09-27 18:03:52

我必须通过互操作从。net代码调用c++代码。

我只是想知道是否有任何方式与另一个函数在不同的类互操作?例如,在c++中,我有以下实用程序类:

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

};

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

注意:这里有一个有关如何使用命名空间来区分不同方法的问题。但是这一次,我不想使用名称空间,而只想使用带有静态函数的类。

编辑:考虑到C包装器中已经有太多的函数(例如,可从。net调用的静态外部"C"函数,没有类或命名空间),如果我能帮助它,我不想引入额外的包装层。

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

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

这是正确答案。P/Invoke应该只用于调用函数具有"C"接口,这意味着extern"C"以防止命名

对参数和返回类型的限制。

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

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