将整数数组传递给 c++ DLL
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++ dll function declaration is
static void __clrcall BubbleSort(int* arrayToSort,int size);
My C++ dll function is
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;
}
}
}
}
In C#, I am accesssing above function as
Sort.Sort.BubbleSort(arrayToBeSort,5);
But C sharp compiler gives error as
The best overloaded method match for 'Sort.Sort.BubbleSort(int*, int)' has some invalid arguments
and
Argument 1: cannot convert from 'int[]' to 'int*'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
托管 C++ 中的数组需要使用托管语法。
这将在 C# 中转换为
您的声明,而不是使用指针(不安全代码)匹配 C# 声明。
如果您需要通过引用传递值,您应该编写如下内容:
Arrays in managed C++ need to use the managed syntax.
This translates in C# to
Your declaration, instead matches the C# declaration using pointers (unsafe code).
If you need to pass a value by reference you should write something like this: