我需要使用js-ctypes代码加载dll文件。这是dll中的标头代码

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类型

有人可以帮我解决这个问题吗?

最佳答案

您的声明是正确的。但是要调用它,您应该这样做:

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

关于javascript - 如何在js-ctypes中将JavaScript字符串转换为unsigned_char js,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38990603/

10-17 02:02