所以我的問題是,我通過值(它是一個浮點數)從我的C代碼中的一個函數傳遞給另一個函數的變量。出於某種原因,通過後該變量爲0。我有多個其他浮動值被傳遞,不是0(全部在同一個函數調用中),所以我不明白爲什麼這個是。這可能是因爲一些錯字,我只是沒有看到簡單:變量在一個函數中有值,在傳遞給另一個函數時變量爲0?
int cuda_call(float *h_DataA, float *h_Kernel, int numSmooths, float kernelSum, int KERNEL_R, int KERNEL_W, int DATA_W){
printf("\n What am I here?: %f \n", kernelSum);
convolutionProgram(h_DataA, h_Kernel, numSmooths, kernelSum, KERNEL_R, KERNEL_W, DATA_W);
return 1;
}
extern "C" void convolutionProgram(float *h_DataA, float *h_Kernel, int numSmooths, float kernelSum, int KERNEL_R, int KERNEL_W, int DATA_W);
void convolutionProgram(float *h_DataA, float *h_Kernel, int numSmooths, float kernelSum, int KERNEL_R, int KERNEL_W, int DATA_W){
printf("\n what am I now? %f \n", kernelSum);
float
*d_DataA,
*d_DataB,
*d_Temp,
*d_Kernel;
.......
}
到時候我得到的所謂功能第二打印,它爲0。
該方法在兩個不同的文件,因此是外部「C」的東西。 – HillaryD 2012-04-05 18:42:16
您需要首先對函數進行原型設計,或者將參數轉換爲整數來調用 – pizza 2012-04-06 03:26:01
嘗試不使用extern c並將另一個函數編譯爲C++。 – 2012-04-13 00:38:57