我在 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;//到这里就报错了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.