将数组从C#传递到C ++库并返回一个数组

时间:2016-06-16 10:49:43

标签: c# c++ arrays interop

我正在尝试包装一个C ++库,以便在C#WPF项目中使用。作为其中的一部分,我需要传递并将大型数组从C#返回到C ++并返回一个大数组。传递数组似乎是这样实现的:

namespace CppWrapper {

    public ref class CppWrapperClass
    {
    public:
        void DoStuff(int* pInt, int arraySize);
    private:        
        computingClass* pCC;
    };
}

然后这样叫:

         int noElements = 1000;
         int[] myArray = new int[noElements];

         for (int i = 0; i < noElements; i++)
            myArray[i] = i * 10;

         unsafe
         {
            fixed (int* pmyArray = &myArray[0])
            {

               CppWrapper.CppWrapperClass controlCpp = new CppWrapper.CppWrapperClass();
               controlCpp.DoStuff(pmyArray, noElements);
            }

         }

如何返回数组?

注意:我希望获得有关实现此目标的最佳方式的任何反馈。我很惊讶从C#到C ++并不容易。我发现用JNI包装库要容易得多。

0 个答案:

没有答案