2016-08-17 7 views
1

js-ctypes 코드로 dll 파일을로드해야합니다. 여기에 DLL의 헤더 코드는자바 스크립트 문자열을 js-ctypes의 unsigned_char js로 변환하는 방법

typedef unsigned char BYTE; 
extern "C" __declspec(dllexport) BYTE* foo(BYTE* a, const char* b); 

그리고, 내가 JS-하는 ctypes 코드를로드 할 수 있습니다 :

var foo = lib.declare("foo", ctypes.default_abi, ctypes.unsigned_char.ptr, ctypes.unsigned_char.ptr, ctypes.char.ptr); 

을 그리고 난이 함수를 호출 할 때, 오류가 발생했습니다

var a = ctypes.unsigned_char.ptr("a"); 
var b = ctypes.char.ptr("b"); 
var result = foo(a, b); 

TypeError : "a"문자열을 ctypes.unsigned_char.ptr 유형으로 변환 할 수 없습니다.

아무도 나를 해결할 수 있습니까?

+0

string에서 unsigned char로 직접 변환하려고 했습니까? – Nada

답변

1

귀하의 신고 내용이 정확합니다. 그러나 이것을 다음과 같이해야합니다 :

var a_str = 'a'; 
var a = ctypes.unsigned_char.array(a_str.length)(a_str); 
var b_str = 'b'; 
var b = ctypes.char.array(b_str.length)(b_str); // `doing b.readString()` will give you "b" 
var result = foo(a.address(), b.address()); 
console.log('result:', result, result.toString()); 

var result_str = result.readString(); 
console.log('result_str:', result_str);