将整型数组传递给c++ DLL
Passing integer array to a 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++中的数组需要使用托管语法。
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)
相关文章:
- 挂起和取消挂起一个文件DLL
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 从C++dll访问C#中的一行主要参数
- 链接到自行创建的dll失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- C++:将外部库链接到dll库
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 不同的Visual Studio版本中缺少.dll
- 从DLL中删除类的实例
- 如何包装第三方DLL在R中使用
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 当我使用 C++ 中的 C# dll 来使用 Selenium 时,存在异常处理问题
- Python ctypes:不会按预期加载 dll
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL