2012-08-10 23 views
1

我正在使用js-sctypes從Linux連接到Linux中的共享庫。 我從圖書館聲明功能如下:Js-ctypes char readString()使Mozilla崩潰

var read_memory = libc.declare("read_memory", ctypes.default_abi, ctypes.int, 
        ctypes.uint32_t, ctypes.char.ptr, ctypes.int, ctypes.int); 

在C++庫這個函數聲明如下:

read_memory(unsigned int address, char *buf, int unit_size, int unit_count) 

我打電話以下方式read_memory功能:

var my = new ctypes.char().address(); 
read_memory(0, my, 4, 1); 
st = st + my.readString(); 

它工作正常,但是當我用更大的unit_sizeunit_count調用函數時,例如火狐崩潰。

是因爲ctypes.char的大小有限,還是有其他原因造成這個故障? 任何有關此事的幫助,將不勝感激。

謝謝。

回答

3

我有同樣的問題,並且問題是由於字符編碼。在我的問題中,我需要將它們從windows-1250轉換爲utf-8。

我用下面的代碼:

result = myFunctionToInvoke(); 
var util = priv.Load("LibToConvert.dll"); 
var wi12502utf8 = util.declare("win12502utf8", ctypes.default_abi, ctypes.char.ptr, ctypes.char.ptr); 
var val = wi12502utf8(result); 
result = val.readString(); 

在這段代碼中我創建了自己的lib(LibToConvert.dll)在C++中的字符轉換。