【发布时间】:2014-04-02 18:46:37
【问题描述】:
我正在尝试创建一个解决方案,我可以在其中通过 CUDA 在 C# 程序中运行 2D int 数组,因此我目前尝试执行此操作的方法是创建一个可以处理 CUDA 的 C++ dll然后代码返回二维数组。我用来将数组发送到 dll 并再次返回的代码如下。
#include "CudaDLL.h"
#include <stdexcept>
int** cudaArrayData;
void CudaDLL::InitialiseArray(int arrayRows, int arrayCols, int** arrayData)
{
cudaArrayData = new int*[arrayCols];
for(int i = 0; i < arrayCols; i++)
{
cudaArrayData[i] = new int[arrayRows];
}
cudaArrayData = arrayData;
}
int** CudaDLL::ReturnArray()
{
return cudaArrayData;
}
但问题是我在返回时收到 C# 错误,“无法编组'返回值':托管/非托管类型组合无效。”我的希望是,如果我将数组作为指针返回,C# 可能希望能够理解并接受它,但没有这样的运气。
有什么想法吗?
【问题讨论】:
-
你的 C# 代码是什么样的?您使用的是 int[][] 还是 int[,]?
-
int[,] 我应该使用 int[][] 我不知道有区别吗?