现在有一个用vc写的标准dll,其它都没有问题,但现在我需要通过dll中的一个function读一个数据出来,这个读出来的数据dll做为一个参数返回,现在我怎么试都不成功。
如下
在VC中调用:extern __int16 __stdcall rf(char *sp,long sa,long sid,char *sfs,DWORD &srl);delphi中申明
function rf(sp:pchar;sa:longint;sid:longint;sfs:pchar;srl:DWORD):Integer;StdCall;external 'SignKey.dll';因为sfs是做为反回参数的,dll会向这个变量的地址存入读出的数据。srl也是一样,存的是数据的大小。我是这样做的,但总是报错,如果没有需要读出数据的参数那就成功能过。加上需要返回的参数就不可以了,总报地址错。哪位高手知道呀。谢谢先了

解决方案 »

  1.   

    function rf(sp:pchar;sa:longint;sid:longint;var sfs:pchar;var srl:DWORD):Integer;StdCall;external 'SignKey.dll';这样试试
      

  2.   

    你试试这样声明:
    function rf(sp:pchar;sa:longint;sid:longint;var sfs:pchar;var srl:DWORD):Integer;StdCall;external 'SignKey.dll';
    我没这样用过,不知能不能行
      

  3.   

    DWORD &srl 和 srl:DWORD 传参数的方式都不对。前者传指针,后者传值__int16 和 Integer(现在机器一般都是32位的字)大小也不一样,虽然这里不一定出错,应该integer=>Word