C++ dll函数声明为
static void __clrcall BubbleSort(int* arrayToSort,int size);
我的C++ dll函数是
void Sort::BubbleSort(int* sortarray,int size)
{
int i,j;
int temp=0;
for(i=0; i< (size - 1); ++i)
{
for(j = i + 1; j > 0; --j)
{
if(sortarray[j] < sortarray[j-1])
{
temp = sortarray[j];
sortarray[j] = sortarray[j - 1];
sortarray[j - 1] = temp;
}
}
}
}
在 C# 中,我正在访问上面的函数作为
Sort.Sort.BubbleSort(arrayToBeSort,5);
但是 C sharp 编译器给出的错误是
“Sort.Sort.BubbleSort(int*, int)”的最佳重载方法匹配有一些无效参数 和 参数 1:无法从“int[]”转换为“int*”
最佳答案
托管 C++ 中的数组需要使用托管语法。
static void __clrcall BubbleSort(array<int>^ arrayToSort, int size)
这在 C# 中转换为
public static void BubbleSort(int[] array, int size);
您的声明改为使用指针(不安全代码)匹配 C# 声明。
public static void BubbleSort(int* array, int size);
如果你需要通过引用传递一个值,你应该这样写:
static void __clrcall MyFunc(array<int>^% arrayByReference)
关于c# - 将整数数组传递给 C++ DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7848225/