我不知道在这种情况下使用哪种'ref‘模块类型。
我有一个DLL函数,它返回一个bool并接受一个文件指针作为参数:
__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文件,并根据是否创建该文件返回一个bool。fname代表“文件名”,是DLL中的C++代码中的C++ nullptr。
我想知道在Node中正确传递文件指针的ref.type是什么。我尝试过空指针、空指针、字符串和对象,但当我在客户机代码中尝试时,它们都会使应用程序崩溃:
var file_name = "test.json";
greenbuild.GB_Build(file_name)谢谢你的帮助。我找不到关于Node-FFI中文件指针的堆栈溢出的另一个问题。
发布于 2018-07-11 20:45:33
对于其他有这个问题的人来说,由于这个问题没有得到任何回答,答案似乎是Node-FFI根本没有文件指针。您必须将C或C++的源代码改为char *。
https://stackoverflow.com/questions/50954641
复制相似问题