Node-ffi调用c DLL返回一个指针
Node-ffi calling c DLL returning a pointer
我正在尝试一个简单的代码来测试我是否知道 return 来自 C DLL 的指针作为参数用于 DLL 的其他函数。但是有些东西没有 运行
C DLL代码
#include <stdint.h>
#if defined(WIN32) || defined(_WIN32)
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif
EXPORT int* init() {
int *p = (int *)calloc(sizeof(int));
p[0]=33;
return p;
}
EXPORT int get(int* base) {
return *base;
}
我的节点应用代码
var ffi = require('ffi');
var ref = require('ref')
var intPtr = ref.refType('int');
var libm = ffi.Library('./miffi', {
'init': [ intPtr, [ ] ],
'get': [ 'int', [ intPtr ] ],
});
var idx = libm.init()
console.log("I get id" )
console.log(libm.get(idx))
但是没有显示第一个 "console.log",尽管它没有显示任何错误。如果我删除行 "p[0]=33;" 我可以看到第一个 "console.log" 尽管 get 没有 运行.
非常感谢
我解决了。我只是忘了添加
#include <stdlib.h>
我没有看到关于它的警告。
我正在尝试一个简单的代码来测试我是否知道 return 来自 C DLL 的指针作为参数用于 DLL 的其他函数。但是有些东西没有 运行
C DLL代码
#include <stdint.h>
#if defined(WIN32) || defined(_WIN32)
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif
EXPORT int* init() {
int *p = (int *)calloc(sizeof(int));
p[0]=33;
return p;
}
EXPORT int get(int* base) {
return *base;
}
我的节点应用代码
var ffi = require('ffi');
var ref = require('ref')
var intPtr = ref.refType('int');
var libm = ffi.Library('./miffi', {
'init': [ intPtr, [ ] ],
'get': [ 'int', [ intPtr ] ],
});
var idx = libm.init()
console.log("I get id" )
console.log(libm.get(idx))
但是没有显示第一个 "console.log",尽管它没有显示任何错误。如果我删除行 "p[0]=33;" 我可以看到第一个 "console.log" 尽管 get 没有 运行.
非常感谢
我解决了。我只是忘了添加
#include <stdlib.h>
我没有看到关于它的警告。