2012-08-10 2 views
1

js-sctypes를 사용하여 Firefox에서 Linux의 공유 라이브러리에 연결하고 있습니다.Js-ctypes char readString() 모질라 충돌 발생

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

나는 다음과 같은 방법으로 read_memory 함수를 호출 오전 :

을 다음과 같이

은 C++ 라이브러리에서
var read_memory = libc.declare("read_memory", ctypes.default_abi, ctypes.int, 
        ctypes.uint32_t, ctypes.char.ptr, ctypes.int, ctypes.int); 

이 기능을 선언 다음과 같이 나는 라이브러리에서 함수를 선언하고

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

괜찮 으면 작동하지만, 내가 큰 unit_sizeunit_count, 함수를 호출 할 때, le read_memory(0, my, 4, 10), Firefox가 충돌합니다.

ctypes.char의 크기가 제한되었거나이 오류의 또 다른 이유가 있습니까? 이 문제에 대한 도움을 주시면 감사하겠습니다.

감사합니다.

답변

3

동일한 문제점이 있으며 문자 인코딩 때문에 문제가 있습니다. 내 문제는 Windows-1250에서 UTF-8로 변환해야합니다. 내가 문자를 변환하기 위해 내 자신의 LIB C에서 (LibToConvert.dll를) ++ 생성이 코드에서

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

:

나는 아래의 코드를 사용했다.

관련 문제