该DLL文件是在Delphi中开发的。功能描述如下:
函数名称:GetMsg
功能描述:用于获取错误 信息。
函数原型:过程GetMsg(ret:Integer; var Msg: PChar); stdcall;
参数说明:ret:表示错误代码。讯息:用于 输出相应的错误信息。
首先,您需要分配 记忆。内存大于或等于255。
根据描述,我知道Msg
参数是一个指针,然后使用node-ffi调用GetMsg
过程,如下所示:
var ffi = require('ffi');
var ref = require('ref');
var TheLib = ffi.Library('TheLib.dll', {
GetMsg: ['void', ['int', ref.types.CString]]
});
const outNameBuffer = Buffer.alloc(255);
TheLib.GetMsg(-25, outNameBuffer);
console.log(outNameBuffer, ref.readCString(outNameBuffer));
请注意,我在Python中使用ctypes
,可以获得对应于值-25
的中文消息。
对此有何建议?
答案 0 :(得分:0)
我遇到了同样的问题,请尝试我的解决方案:
var ffi = require('ffi');
var ref = require('ref');
var ArrayType = require('ref-array');
var charPtrArray = ArrayType('char *', 64);
var charPtrArrayPtr = ref.refType(charPtrArray);
var TheLib = ffi.Library('TheLib.dll', {
GetMsg: ['void', ['int', charPtrArrayPtr]
});
console.log(charPtrArrayPtr);