我想創建一個解決方案,我可以通過CUDA在C#程序內運行一個二維詮釋數組,所以我目前採取的做法是做到這一點創建一個可以處理CUDA代碼的C++ dll,然後返回二維數組。下面是我用來將數組發送給dll並返回的代碼。發送一個C#和C++之間的二維詮釋數組
#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 [,]? – kunzmi
int [,]我應該使用int [] []我tbh不知道有什麼區別? – AdamWTF