Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c+;的节点FFI的参考类型是什么+;文件指针?_C++_Node.js_Types_Node Ffi_File Pointer - Fatal编程技术网

C++ c+;的节点FFI的参考类型是什么+;文件指针?

C++ c+;的节点FFI的参考类型是什么+;文件指针?,c++,node.js,types,node-ffi,file-pointer,C++,Node.js,Types,Node Ffi,File Pointer,我无法确定在这种情况下使用哪种“ref”模块类型 我有一个DLL函数,它返回bool并将文件指针作为参数: __declspec(dllexport) BOOL __stdcall GB_Build( FILE *fname ) { return Greenhouse.Build(fname) == true ? TRUE : FALSE; } 以及节点FFI绑定: var ffi = require('ffi'); var ref = require('ref'); var greenbu

我无法确定在这种情况下使用哪种“ref”模块类型

我有一个DLL函数,它返回bool并将文件指针作为参数:

__declspec(dllexport) BOOL __stdcall GB_Build( FILE *fname )
{ return Greenhouse.Build(fname) == true ? TRUE : FALSE; }
以及节点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。FNED代表“文件名”,是DLL中的C++代码中的C++ NulLPTR。 我想知道在节点FFI中正确传递文件指针的ref.type是什么。我尝试过空指针、空指针、字符串和对象,但当我在客户机代码中尝试此操作时,它们都会使应用程序崩溃:

var file_name = "test.json";
greenbuild.GB_Build(file_name)

谢谢你的帮助。我找不到关于节点FFI中文件指针的stackoverflow的其他问题。

对于其他有此问题的人,由于这个问题没有得到回答,答案似乎是节点FFI根本没有文件指针。必须更改C或C++的源代码,以使用char *代替.< /p>