从 delphi 或 lazarus 调用 visual studio dll

calling a visual studio dll from delphi or lazarus

我需要从 delphi 7 或 lazarus 调用一个 dll。关于 dll 的信息很少,但我在 visual studio 中有一个使用示例: 声明:

    [DllImport("landwell.dll", EntryPoint = "PTcomm", CharSet = CharSet.Auto)]
    public static extern int PTcomm(int com, int boud, ref int Rcount);
    [DllImport("landwell.dll", EntryPoint = "PTcomm_YPWJ", CharSet = CharSet.Auto)]
    public static extern int PTcomm_YPWJ(int com, int boud, ref int Rcount);

    [DllImport("landwell.dll", EntryPoint = "PTrecord", CharSet = CharSet.Auto)]
    public static extern int PTrecord(int num,byte[] record);

如何在 Delphi 7 或 Lazarus 中声明和调用这些函数?

我唯一的文档是: 1、普通传输: PTcomm(int com,int boud,int *Rcount) com为串口号,波特率为9600,*Rcount为记录总数
“1”表示returning成功,“0"means no record,"-1”表示打开端口不成功,“-2”表示发送不成功

2、常用采集数据 PTrecord(int num,byte record[8]) record{8}表示8byte(包括reader号),num表示序号 “1”表示return成功,“0”表示return失败 我在 Visual Studio 中只有一个示例,我什至无法尝试,因为它是用旧版本的 VS 编写的,自动转换不起作用。这个时候我没有学习VS的打算。 post 前面提到的声明来自那个例子。 一些不认识我、不知道我做了什么的人指责我什至没有尝试过。我尝试过但失败了,这就是我要问的原因。

谢谢,让-克洛德

在 Delphi 和 Lazarus 中尝试这些声明:

function PTcomm(com, boud: Integer; var Rcount: Integer): Integer; stdcall; external 'landwell.dll';

function PTcomm_YPWJ(com, boud: Integer; var Rcount: Integer): Integer; stdcall; external 'landwell.dll';

function PTrecord(num: Integer; rec: PByte): Integer; stdcall; external 'landwell.dll';