有的dll文件,
提供了c调用的方法:
extern "C" void  _export _stdcall get_one_yc(int fac, int yc_dot, float  *yc_value);我试着在delphi写入下语句调用,都失败:
procedure get_one_yc(fac:Integer;yc_dot:Integer;out yc_value:single);export;Stdcall;external 'aaa.dll';
或者:
procedure get_one_yc(fac:Integer;yc_dot:Integer;yc_value:single);export;Stdcall;external 'aaa.dll';c里面的*yc_value好象是指针,
我从小就没有学会指针,
一碰指针就头大,赫赫,
麻烦高手们教教我,
delphi下如何调用?先谢了

解决方案 »

  1.   

    float  *yc_value 
    yc_value 是一个指向FLOAT的指针
    delphi中可以声明为PDouble,或者用POINTER,之后再转换procedure get_one_yc(fac:Integer;yc_dot:Integer;yc_value:PDouble);export;Stdcall;external 'aaa.dll';
      

  2.   

    前两个参数是对的,最后一个时指针类型,要用PDouble
      

  3.   

    procedure get_one_yc(fac:Integer;yc_dot:Integer;yc_value:PDouble);Stdcall;implementation
    procedure get_one_yc; external 'aaa.dll' name get_one_yc';
      

  4.   

    对于你这种应用,将你写的第一种,将out改为var即可。
    procedure get_one_yc(fac:Integer;yc_dot:Integer;var yc_value:single);export;Stdcall;external 'aaa.dll'; 
      

  5.   

    然后在delphi里面调用这个数,
    声明的PDouble要怎么转成double或者float呢?显示出来呢?
    赫赫,我水平是不是真的很臭
      

  6.   

    我还是不会阿,
    var 
    aaa:integer;
    bbb:integer;
    ccc:double;aaa:=1;
    bbb:=2;
    get_one_yc(aaa,bbb,ccc);
    showmessage(floattostr(ccc));还是不对,是不是要把pdouble转成double,或者float,
    我要怎么转阿!!!!!
      

  7.   

    PDouble肯定不对,因为float是单精度浮点型,Delphi与之对应的Single,如果要用指针,也是用PSingle建议使用非指针方案,就是我上面说的用var
      

  8.   

    procedure get_one_yc(fac:Integer;yc_dot:Integer;var yc_value:single);export;Stdcall;external 'aaa.dll';var 
    aaa:integer; 
    bbb:integer; 
    ccc:Single; aaa:=1; 
    bbb:=2; 
    get_one_yc(aaa,bbb,ccc); 
    showmessage(floattostr(ccc)); 
      

  9.   

    var yc_value:single是不行的,我试过了
      

  10.   

    最后个参数最好用指针另外调用方式有好几种常用的有stdcall、cdecl方式
      

  11.   

    参数用指针:
    procedure get_one_yc(fac:Integer;yc_dot:Integer;yc_value:Psingle);export;Stdcall;external 'aaa.dll';var
    aaa:integer;
    bbb:integer;
    ccc:PSingle;aaa:=1;
    bbb:=2;
    get_one_yc(aaa,bbb,ccc);////////////提示windows.Single和system.Single不对
    showmessage(floattostr(ccc)); 不对,要怎么改
      

  12.   

    ccc:Single;
    get_one_yc(aaa,bbb,@ccc);////////////提示windows.Single和system.Single不对