用@调用函数

Zer*_*ref 2 delphi dll

我需要在Delphi中调用外部DLL的函数,函数定义了调用的字节,我应该如何调用它们,在Delphi中声明它们时,它显示了它所期望的语法错误; 反而得到了@

function _imp_Com@32(a1: INT64; a2: Pointer; a3: INT64; a4: Pointer;
 a5: INT64; a6: Pointer; a7: Pointer; a8: INT64): INT64 cdecl stdcall;external 'imp.dll';

function _imp_Decom@56(a1_compbuf: Pointer; a2_clen: INT64;
      a3_out: Pointer; a4_outlen: INT64; a5_crcflag: INT64; a5u: INT64;
      a6_verb: INT64; a7_dict: Pointer; a8_dictsize: INT64; a9_cb: Pointer;
      a10: INT64; a11: Pointer = 0; a12: INT64 = 0; a14: INT64 = 0)
      : INT64 cdecl stdcall;external 'imp.dll';
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 6

您不能在名称中使用它,因此您需要使用有效的标识符导入该函数.像这样:

function imp_Com(...): Int64; stdcall; external 'imp.dll' name '_imp_Com@32';
Run Code Online (Sandbox Code Playgroud)

函数不能同时是cdecl和stdcall.不确定代码中的内容.根据名称装饰,这些功能是stdcall.