c - Node-ffi 调用 c DLL 返回指针

标签 c node.js node-ffi

我正在尝试一个简单的代码来测试我是否知道从 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;
}

我的 Node 应用程序的代码

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;”行尽管 get 没有运行,但我可以看到第一个“console.log”。

非常感谢

最佳答案

我解决了。我只是忘了添加

#include <stdlib.h>

我没有看到有关它的警告。

关于c - Node-ffi 调用 c DLL 返回指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58410531/

相关文章:

c - C 中的列表和字符串问题

javascript - 动态符号检索错误: Win32 error 127 - even when importing self process

c++ - 如何使用结构 vector 作为参数从node-ffi调用c++中的方法?

node.js - 要求 ('ffi' )在 Electron 应用程序中引发错误

c - 有没有办法在 Linux 中创建用户定义的信号?

检查资源是否被不同进程共享

c - 如何使用 write/fread 向结构数组写入/读取数据?

node.js - NodeJS - 服务器端文件上传处理程序

linux - npm 安装失败

node.js - 有没有办法使用 node.js 覆盖 yaml 文件中的基本设置?