【问题标题】:C++ int vector to c#C++ int 向量到 c#
【发布时间】:2012-06-20 21:07:44
【问题描述】:

我正在做一个 C# 项目,我想从 C++ 的算法库中调用 next_permutation。我找到了在 c# 中调用 c++ 函数的方法,但我不知道如何从 c++ 获取向量并在 c# 中使用它(因为 next_permutation 需要一个 int 向量...)

这是我目前正在尝试的:

extern void NextPermutation(vector<int>& permutation) 
{
    next_permutation (permutation.begin(),permutation.end()); 
}

[DllImport("PEDLL.dll", CallingConvention = CallingConvention.Cdecl)]
        private static extern void NextPermutation(IntPtr test);

【问题讨论】:

标签: c# c++ function call


【解决方案1】:

这样做的唯一方法是通过 C++/CLI 包装类。但是,您必须将 int[] 或 List 转换为 std::vector 作为单独的传递。如果您传入的向量中有大量数据......这将导致显着减速。

【讨论】:

    【解决方案2】:

    P/Invoke 对于 C++ 类型非常不利。您应该尝试将您的问题简化为 C 接口。在你的情况下,这很容易!

    extern void NextPermutation(int *permutation, int count) 
    {
        next_permutation (permutation, permutation + count); 
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2011-09-17
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 2020-12-17
      相关资源
      最近更新 更多