从节点js用pAnisChar调用Delphi stdcall函数

use*_*437 4 delphi node.js node-ffi

我有一个遗留的Delphi dll,它需要一个json字符串作为输入(pAnsiChar)并返回一个int作为成功或失败.我已经设法使用node-ffi从nodejs连接到dll.但是,我得到返回int值指向无效的json字符串.

有人能指出我如何使用pAnsiChar作为函数参数从节点调用Delphi dll

谢谢

Dav*_*nan 5

据我所知,Node FFI目前不允许您控制调用约定.默认是cdecl.所以在Delphi方面它看起来像这样:

function MyFunction(str: PAnsiChar): Integer; cdecl;
Run Code Online (Sandbox Code Playgroud)

在node-ffi方面,我认为它看起来像这样:

var ffi = require('ffi');
var mylib = ffi.Library('libname', {
  'MyFunction': [ 'int', [ 'string' ] ]
});
var retval = mylib.MyFunction("some string");
Run Code Online (Sandbox Code Playgroud)

如果您无法修改旧DLL,那么我担心您可能需要将其包装在除了导出cdecl函数之外的其他任何DLL中,然后将它们传递给旧DLL的stdcall函数.