1

我正在使用 js-sctypes 从 Firefox 连接到 Linux 中的共享库。我从库中声明一个函数,如下所示:

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例如read_memory(0, my, 4, 10),Firefox 崩溃了。

是因为ctypes.char尺寸有限,还是有别的原因造成这个故障?对此问题的任何帮助将不胜感激。

谢谢你。

4

1 回答 1

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();

在这段代码中,我在 C++ 中创建了自己的库(LibToConvert.dll)来转换字符。

于 2012-11-15T10:29:26.397 回答