我有編譯成asm.js使用以下參數C函數傳遞函數之間的雙陣列:在asm.js
void myfunc(double v1[], double v2[], int v_size, double c)
它需要在陣列中(v1
),施加變換,然後填充另一與輸出相同大小的數組(v2
)。
我編譯它,然後運行下面的JS代碼:
v1 = new Array(1.0, 1.5, 2.0);
v2 = Module._malloc(8 * v1.length);
Module.ccall("myfunc", null, ["array", "number", "number", "number"], [v1, v2, v1.length, 2]);
然而,當我運行getValue(v2, "double")
我得到1.297703e-318(這是錯誤的),當我運行getValue(v2 + 8, "double")
或getValue(v2 + 16, "double")
返回0 (這也是錯誤的)。
我已經減少了C函數,只是控制檯註銷v1
的內容,並且它也打印出垃圾數據,所以至少在讀取傳入的雙數組時遇到問題。更具體的問題是:
- 如何正確地將雙數組傳遞給asm.js函數?
- 如何從asm.js函數正確地返回一個double數組?
不應該[[array],「number」,「number」,「number」]是[「array」,「array」,「number」,「number」]? – pah
@threadp:我被告知了asm。js IRC頻道,因爲v2不是一個Javascript數組,我不應該使用「數組」來傳遞它,而是使用「數字」。 – Lucas
@盧卡斯,在這種情況下,爲什麼不是[「號碼」,「號碼」,「號碼」,「號碼」]? –