使用内存分配传参的方式调用dll成功了,但是回调没执行? - CNode技术社区

使用内存分配传参的方式调用dll成功了,但是回调没执行?
发布于 11 年前 作者 Einsy 4083 次浏览 最后一次编辑是 9 年前 来自 问答

需要引用一个dll,列出了其中两个接口函数,是C的接口,其中部分头文件如下, typedef struct _LogInfo { char severip[16]; int severport; char severid[24]; char localip[16]; int localport; char username[24]; char password[64]; int keepalive; int timeout; int expires; }LogInfo;

typedef void (*Callback_Offline)( void *userdata );

int GBAPI NP_GB_Login( void* userdata, LogInfo &info, Callback_Offline callback ); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Nodejs代码如下: var ffi = require(’.../.../’); var ref = require(‘ref’); var Struct = require(‘ref-struct’); //var hWnd = new Buffer(8); var int64_t = ref.types.int64; var voidptr = ref.refType(ref.types.void); var intptr = ref.refType(ref.types.int); var uint8_ptr = ref.refType(ref.types.uint8);

var SDKHandle = ffi.Library(’./gbsdk-console’, { ‘NP_GB_Init’: [‘void’, []], ‘NP_GB_Login’: [‘int’, [‘void’,_LogInfoPtr,voidptr]] });

var logInfo= new Buffer(164); logInfo.write("192.168.60.1070円0円",0,16); logInfo.writeInt32LE(5060,16); logInfo.write("150000000020000000010円0円0円0円",20,24); logInfo.write("192.168.60.460円0円",44,16); logInfo.writeInt32LE(81,60); logInfo.write("150000000040000000030円0円0円0円",64,24); logInfo.write("1234560円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円0円",88,64); logInfo.writeInt32LE(60,152); logInfo.writeInt32LE(3,156); logInfo.writeInt32LE(3600,160); //这段结构体完全正确,下面运行正常!看起来似乎不用使用nodejs 的ref-struct模块的。

SDKHandle.NP_GB_Init();

var Callback_Offline=ffi.Callback(‘void’,[voidptr],function(userdata){ console.log("userdata"); console.log(userdata); }); var N=SDKHandle.NP_GB_Login("null",logInfo,Callback_Offline); console.log(N);

请问:为什么回调没执行呢?请哪位大神帮下我,问了响马大侠,他也没精力搞清楚这个问题,请看到的大神帮下,万分感谢!

回到顶部

AltStyle によって変換されたページ (->オリジナル) /