2016-08-17 7 views
1

js-ctypesコードを含むdllファイルをロードする必要があります。ここではヘッダコードは、DLLjs-ctypesのjavascript文字列を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

文字列から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); 
関連する問題