小弟刚接触到Delphi,关于调用DLL中遇到的问题请大家赐教~~~
VC++的DLL文件中的代码为:
extern "C " __declspec( dllexport ) void MarkPoints( double* pDPts, int iPtCount )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CLsrEllipseApp *pApp = ( CLsrEllipseApp* )AfxGetApp();
pApp-> MarkPoints( pDPts, iPtCount );
}
我在Delphi中这样使用的,但编译时出了问题;
procedure TMainInterface.Button1Click(Sender: TObject);
var
pDPts:array[0..11] of double;
pDouble:^double;
type MarkPoints=procedure (pDouble:double; iPtCount:integer);cdecl;
begin
pDPts[0]:=1;
pDPts[1]:=2;
pDPts[2]:=3;
pDPts[3]:=4;
pDPts[4]:=5;
pDPts[5]:=6;
pDPts[6]:=7;
pDPts[7]:=8;
pDPts[8]:=9;
pDPts[9]:=10;
pDPts[10]:=11;
pDPts[11]:=12;
pDouble := @pDPts;
MarkPoints( pDPts, 12 );
end;
错误信息:
expected but ', 'found!!
请大家帮帮我~~~~~~~~~~谢谢
[解决办法]
procedure TMainInterface.Button1Click(Sender: TObject);
var
pDPts:array[0..11] of double;
type MarkPoints=procedure (pDPts: PDouble; iPtCount: Integer); cdecl;
begin
pDPts[0]:=1;
pDPts[1]:=2;
pDPts[2]:=3;
pDPts[3]:=4;
pDPts[4]:=5;
pDPts[5]:=6;
pDPts[6]:=7;
pDPts[7]:=8;
pDPts[8]:=9;
pDPts[9]:=10;
pDPts[10]:=11;
pDPts[11]:=12;
MarkPoints(@pDPts, 12);
end;
[解决办法]
定义有错误,type MarkPoints=procedure (pDouble:^double; iPtCount:integer);stacall;
pDouble就是指针
[解决办法]
MarkPoints是类型不是方法
type MarkPoints=procedure (pDPts: PDouble; iPtCount: Integer); cdecl;
改称
MarkPoints: procedure (pDPts: PDouble; iPtCount: Integer); cdecl;