请C++与Delphi兼修的人帮我解决个小问题!谢谢(续) ( 积分: 30 )

  • 主题发起人 主题发起人 yxzymh
  • 开始时间 开始时间
Y

yxzymh

Unregistered / Unconfirmed
GUEST, unregistred user!
帮我将这段代码写为Delphi代码吧。
extern "C"
double __declspec(dllimport) __stdcall CalAirDensity(
constdo
uble &pB,
constdo
uble &pT,
constdo
uble &pV
);
上次拜托了loveshanshan
 
function CalAirDensity(pB,pT,pV:pDouble):Double;
stdcall;
 
谢谢wenyue,再请问,Dll是C写的。我调用的时候返回的值应该是Double?还是其它的类型?
 
是Double,谢谢wenyue,给分结贴
 
幸亏没有结贴,wenyue/loveshanshan 及其他的高手能不能帮我解决另一个问题(另有分奉上)
C下代码:
typedef void __stdcall (*fun_AddResult)(char pDataStr[10][255],
do
uble pDataDouble[100]);
extern "C"
void __declspec(dllimport) __stdcall FanSelect(
void *pSeriesNames,//系列名称 * (typedef struct{char Data[255];} ;)
fun_AddResult pAddResult//函数指针,用于回传数据
);
LoveShanShan同志帮我转换的Delphi代码
type
TCharArray=array [0..9] of array [0..254] of Char;
PCharArray=^TCharArray;
TDoubleArray=array [0..99] ofdo
uble;
PDoubleArray=^TDoubleArray;
fun_AddResult=procedure(pDataStr:PCharArray;pDataDouble:PDoubleArray);stdcall;
procedure FanSelect(pSeriesNames:Pointer;pAddResult:fun_AddResult);cdecl;
现在已经能够成功调用dll中的FanSelect函数,而且没有任何错误,但是我怎样才能得到其中的内容呢。不好意思啊。wenyue本贴的30分是您的,这个新问题的分数另行奉上。
 
请看我得调用
Var
Result1 : PcharArray;
Result2 : PDoubleArray;
ResultS : fun_AddResult;
........
begin
.......
ResultS(Result1,Result2);
FanSelect(pSeriesName,1,pSubSeriesNames,1,pFlow,pFlowUnitType,ResultS);
......
end;

当执行到ResultS(Result1,Result2)后就出现错误,错误为“Access Violation at address 00000060.Read of address 00000060”,怎么回事?各位帮帮我啊
 
先结贴吧
 
后退
顶部