我在 node.js 里用 ffi 调用 c++的 API,不带参数的 API 可以调通,带结构体指针的参数不知道如何调用 我要调用的是 Login 方法 这是 c++代码
typedef struct _LoginInfo{
LoginAuthType authType;
char *username;
char *userPassword;
char *appKey;
char *appToken;
char *timestamp;
char *MD5Token;
_LoginInfo()
{
memset(this,0,sizeof(_LoginInfo));
}
}ECLoginInfo;
EC_CALL_API int Login(const ECLoginInfo *loginInfo);
这是 js 代码
const ref = require("ref");
const Struct = require("ref-struct");
var ECLoginInfo = Struct({
'authType': 'int',
'username': 'pointer',
'userPassword': 'pointer',
'appKey': 'pointer',
'appToken:':'pointer',
'timestamp': 'pointer',
'MD5Token': 'pointer'
});
var ECLoginInfoPtr = ref.refType(ECLoginInfo);
exports.ECLoginInfo = ECLoginInfo;
exports.ECLoginInfoPtr = ECLoginInfoPtr;
var eclogin = new ECLoginInfo();
const buf = Buffer(100) // 初始化一个无类型的指针
buf.write("12345", 0) // 写入值 12345
console.log(buf)
console.log(buf.hexAddress()) // 获取地址 hexAddress
buf.type = ref.types.CString;//到这里就报错了
![]() |
1
ysc3839 2019-01-17 18:50:50 +08:00 via Android
需要导出为 C 语言函数,看看 EC_CALL_API 的定义?
|