函数声明如下:
function f_init(const Handle:DOWRD;const InData: PChar;RetMsg: PChar; const InData2: pchar=nil): integer;stdcall;external 'Apply.dll';请问Handle应该怎么写这样可不可以
f_init(Application.Handle,pchar(s1),pchar(s2),pchar(s3));谢谢回答

解决方案 »

  1.   

    const Handle:DOWRD
    ============
    没有DOWRD这个类型-_-!!  是DWORD。
      

  2.   

    不好意思,是我打错了,实际上是DWORD
      

  3.   

    哦?这样啊。如果你的s1,s2,s3定义为string,这么调用应该没问题的啊!
      

  4.   

    你第一个参数const Handle:DWord在dll里应该有确切的定义,不一定是Application.Handle吧,
    也可能是窗口句柄。从TWinControl继承的所有类都有句柄。
      

  5.   

    f_init(Application.Handle,pchar(s1),pchar(s2),pchar(s3));
    ----你这样调用也没有错,但要根据实际实现的功能来传递正确的
    参数,先要分析DLL中的句柄是要实现什么?要求传递什么句柄?
    这样才能正确的赋予参数。
      

  6.   

    handle应该是调用这个函数的进程的HANDLE,我自作主张把声明中的DWORD改成THANDLE,运行程序时发现这个DLL的函数是能运行的,只是运行到后来出现了一个错误:
    Access violation at address XXXXX in module apply.dll. write of address  XXXXX.
      

  7.   

    我自己知道原因了,原来retmsg是要返回信息的,需要预先分配空间