2016-08-17 3 views
1

Мне нужно загрузить DLL-файл с кодом js-ctypes. Вот код заголовка в DLLКак преобразовать строку javascript в unsigned_char js в js-ctypes

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

ТипError: не может преобразовать строку "a" в тип ctypes.unsigned_char.ptr

Может ли кто-нибудь помочь мне решить эту проблему?

+0

Вы пытались передать из строки в неподписанный символ напрямую? – 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); 
Смежные вопросы