我看到了一個類似的問題,但一直未能得到想要的結果。我需要調用一個C++函數並讓該函數將一個數組傳遞給tcl。我現在的結構是:從C++函數返回一個char數組到tcl
Tcl_Obj * result = Tcl_NewObj();
unsigned char *buffer = Tcl_SetByteArrayLength(result, 16);
//some other code
//I2C function that fills the buffer
sub_i2c_read(handles[handle], theI2cAddr, 0, 0, (char*)buffer, theNumToRead
//more code
//try to place data in tcl
Tcl_SetObjResult(theInterp, result);
我已經能夠看到,緩衝區有C++中所需的內容,但我想它在TCL設置變量爲空。
我想這樣稱呼它:
set result [sub20 read $hand "70" 3]
我現在的思維過程是,這使得TCL對象,使用「緩衝」爲指針字節數組把它變成一個字節數組,然後將數據設置爲tcl,但這顯然是有缺陷的。
任何進一步的澄清,將不勝感激。
一個字節數組在Tcl中沒有隱含的含義。這不是一個字符串,你不應該查看它。 – 2015-02-24 16:25:16
@ n.m。所以我應該尋找一種方法將其轉換爲Tcl中的字符串? – 2015-02-24 16:30:19
你怎麼確定結果是空的?使用二進制掃描? – 2015-02-24 16:44:26