请教 同一个库函数 DELPHI和VC运行结果不同,请指教。 ( 积分: 50 )

  • 主题发起人 wpsqsibo12
  • 开始时间
W

wpsqsibo12

Unregistered / Unconfirmed
GUEST, unregistred user!
请教 同一个库函数 DELPHI和VC运行结果不同,请指教。


extern "C" _declspec(dllexport) int ProcessGridData(LPSTR lpszFilename,
int nColorNum,int nWayNum,int nFrameNum,BYTE* pRed,BYTE* pGreen,BYTE* pBlue);


//以下为VC执行代码
char szFilename[MAX_PATH]="c://a.bin";
int nColorNum = 3;
int nWayNum = 6;
int nFrameNum = 5;
BYTE pRed[2*5]= {0,0,0,0,0,0,0,0,0,0};
BYTE pGreen[2*5]={0,0,0,0,0,0,0,0,0,0};
BYTE pBlue[2*5] ={0,0,0,0,0,0,0,0,0,0};
int nRet = ProcessGridData(szFilename,
nColorNum, nWayNum, nFrameNum, pRed, pGreen, pBlue);


//以下是DELPHI中的引用

Procedure ProcessGridData(LpszFilename : array of char; ncolornum,nwaynum,nFrameNum :Integer; pR,pG,pB : array of byte) stdcall ;far external 'NEON_Transform.dll' ;

//以下为DELPHI执行代码

nColorNum :Integer;
nWayNum :Integer;
nFrameNum :Integer;
pR ,pG,pB : array of byte;
test :array [0..255] of char;

nColorNum:=3;
nWayNum :=6;
nFrameNum:=5;
SetLength(pR,10);
SetLength(pG,10);
SetLength(pB,10);
for i:=0 to 9 do
begin
pr:=0;
pg:=0;
pb:=0;
end;

test:='c:/1.bin';
ProcessGridData(test,ncolornum,nwaynum,nFrameNum,pr,pg,pb);

执行后,DELHI中的 C:/1.bin 文件和 VC执行后的BIN 文件不同,更奇怪的是,DELPHI 中,用同一个菜单多次执行结果也不同,但程序重启第一次执行的结果是一样的。
 
function ProcessGridData(LpszFilename : PChar; ncolornum,nwaynum,nFrameNum :Integer; pR,pG,pB : PByte): Integer; stdcall ;external 'NEON_Transform.dll' ;
 
已经解决了

问题出在类型错误上 。pr,pg,pb 应该是指向BYTE的指针。同时谢谢tseug 的指点。

Procedure ProcessGridData(LpszFilename : array of char; ncolornum,nwaynum,nFrameNum :Integer; pR,pG,pB : pbyte) stdcall ;far external 'NEON_Transform.dll' ;

//以下为DELPHI执行代码

nColorNum :Integer;
nWayNum :Integer;
nFrameNum :Integer;
pR ,pG,pB : array of byte;
test :array [0..255] of char;

nColorNum:=3;
nWayNum :=6;
nFrameNum:=5;
SetLength(pR,10);
SetLength(pG,10);
SetLength(pB,10);
for i:=0 to 9 do
begin
pr:=0;
pg:=0;
pb:=0;
end;

test:='c:/1.bin';
ProcessGridData(test,ncolornum,nwaynum,nFrameNum,@pr[0],@pg[0],@pb[0]);
 
顶部