C++ 文件指针的 Node-FFI 引用类型是什么?
What is the reference type for Node-FFI for a c++ file pointer?
我不知道在这种情况下应该使用哪种 'ref' 模块类型。
我有一个 DLL 函数,它 returns 一个布尔值并将文件指针作为参数:
__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 文件,returns 一个基于文件是否创建的布尔值。 fname 代表 "file name" 并且是 DLL 中 C++ 代码中的 C++ nullptr。
我想知道在 Node-FFI 中正确传递文件指针的 ref.type 是什么。我已经尝试过空指针、null、字符串和对象,但是当我在客户端代码中尝试时,它们都会使应用程序崩溃:
var file_name = "test.json";
greenbuild.GB_Build(file_name)
感谢您的帮助。我在 Whosebug 上找不到关于 Node-FFI 中文件指针的另一个问题。
对于遇到这个问题的其他人,由于这个问题没有得到回应,答案似乎是 Node-FFI 根本没有文件指针。您必须更改 C 或 C++ 的源代码以改用 char *。
我不知道在这种情况下应该使用哪种 'ref' 模块类型。
我有一个 DLL 函数,它 returns 一个布尔值并将文件指针作为参数:
__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 文件,returns 一个基于文件是否创建的布尔值。 fname 代表 "file name" 并且是 DLL 中 C++ 代码中的 C++ nullptr。
我想知道在 Node-FFI 中正确传递文件指针的 ref.type 是什么。我已经尝试过空指针、null、字符串和对象,但是当我在客户端代码中尝试时,它们都会使应用程序崩溃:
var file_name = "test.json";
greenbuild.GB_Build(file_name)
感谢您的帮助。我在 Whosebug 上找不到关于 Node-FFI 中文件指针的另一个问题。
对于遇到这个问题的其他人,由于这个问题没有得到回应,答案似乎是 Node-FFI 根本没有文件指针。您必须更改 C 或 C++ 的源代码以改用 char *。