我不知道在这种情况下使用哪种“参考”模块类型。
我有一个 DLL 函数,它返回一个布尔值并将文件指针作为参数:
__declspec(dllexport) BOOL __stdcall GB_Build( FILE *fname )
{ return Greenhouse.Build(fname) == true ? TRUE : FALSE; }
和 Node-FFI 绑定:
var ffi = require('ffi');
var ref = require('ref');
var greenbuildlib = null;
greenbuildlib = './PGD/GreenBuild_DLL.dll';
var greenbuild = ffi.Library(greenbuildlib, {
"GB_GetBayLength": ['double', []],
"GB_SetBayLength": ['void', ['double']],
"GB_Build": ['bool', [ref.types.Object]],
});
module.exports = greenbuild;
“GB_Build”函数创建一个 json 文件,并根据文件是否创建返回一个布尔值。fname 代表“文件名”,是 DLL 内 C++ 代码中的 C++ nullptr。
我想知道在 Node-FFI 中正确传递文件指针的 ref.type 是什么。我尝试过空指针、空指针、字符串和对象,但是当我在客户端代码中尝试此操作时,它们都会使应用程序崩溃:
var file_name = "test.json";
greenbuild.GB_Build(file_name)
感谢您的任何帮助。我在 stackoverflow 上找不到关于 Node-FFI 中文件指针的另一个问题。