Файл DLL был разработан в Delphi. Функция была описана ниже:
Имя функции: GetMsg
Описание функции: используется для получения ошибки
Информация.
Прототип функции: процедура GetMsg (ret: Integer; var Msg:
PChar); STDCALL;
Описание параметра: ret: Указывает код ошибки. Msg: используется
вывести соответствующую информацию об ошибке.
Во-первых, вам нужно выделить
объем памяти. Память больше или равна 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));
Я всегда получаю такой ответ:
Обратите внимание, что я использую ctypes
в Python, я могу получить китайское сообщение, соответствующее значению -25
.
Есть предложения по этому поводу?