Delphi 如何调用VC开发的,用整型实参返回数据的DLL ( 积分: 50 )

  • 主题发起人 主题发起人 kuai2000
  • 开始时间 开始时间
K

kuai2000

Unregistered / Unconfirmed
GUEST, unregistred user!
用VC调用则没有问题,VC的 DLL声明如下:
bool WtSys_GetData(int VehicleID ,int TransNum ,long GrossWeight,int AxisCount, double Speed,double Acceleration, int Direction)
其中,除VehicleID 外,都是实参

DELPHI的调用如下:
function WtSys_GetData(VehicleID : Integer ; var TransNum:Integer ;var GrossWeight:LongInt ;var AxisCount : Integer ;var SpeedReal ; var Acceleration:Real ;var Direction:Integer):Boolean;stdcall;external 'WtSys_Dll.dll';

调用能够成功,也没报错,但是返回的数据明显不正确。
 
其中用stdcall 和 cdecl 都有试过,结果一样
 
bool WtSys_GetData(int VehicleID ,int TransNum ,long GrossWeight,int AxisCount, double Speed,double Acceleration, int Direction)
哪来的实参?
不都是形参吗?
 
不好意思,VC那边应该是这个
bool WtSys_GetData(int VehicleID ,int &TransNum ,long &GrossWeight,int &AxisCount, double &Speed,double &Acceleration, int &Direction)
 
既然如此的话你可以试试都改用指针类型.貌似c里的引用传递与delphi的不一样.

你可以试试
__stdcall BOOL WtSys_GetData(const int VehicleID ,int *TransNum ,long *GrossWeight,int *AxisCount, double *Speed,double *Acceleration, int *Direction);

在delphi中

function WtSys_GetData
(const VehicleID : Integer; pTransNum :PInteger; pGrossWeight:PCardinal; pAxisCount:PInteger; pSpeed,pAcceleration:PDouble; pDirection: PInteger):LongBool;stdcall;
 
后退
顶部