我现在有一个vc的dll,其中输出了一个函数
int getstr(_int64 cust,char *maskstr,char *retstr)retstr是要返回的字符串我在delphi中调用的程序如下:
function getstr(cust:longint;maskstr:pchar;var
retstr :pchar):integer;cdecl;external 'strdll.dll' name 'getstr';我调用的时候没有问题,就是retstr始终不能返回正确的值,我也调试过,发现retstr根本没有被改变,但dll在vc中调用时是没有问题的。那位大侠知道原因,重金酬谢!!!

解决方案 »

  1.   

    function getstr(cust:longint;maskstr:pchar;///del //var//
    retstr :pchar):integer;cdecl;external 'strdll.dll' name 'getstr';
      

  2.   

    function getstr(cust:longint;maskstr:pchar;retstr :pchar):integer;cdecl;external 'strdll.dll' name 'getstr';
      

  3.   

    c中  _int64 是8个字节, 
    delphi  longint 和 integer 都是4个字节; Int64 是8 个字节;maskstr和resstr都是pchar类型;最后注意函数的调用约定就可以了。
      

  4.   

    VC中这样写:
    extern "C" int __declspec(dllexport) __stdcall getstr(_int64 cust,char *maskstr,char *retstr);然后delphi中这样调用:
    function getstr(cust:longint;maskstr:pchar;retstr :pchar):integer;stdcall;external 'strdll.dll';
    如果这样还出错,我倒给你分,好吗?
      

  5.   

    错误就在于dll和调用者之间参数传递的问题,cdecl和stdcall这两个是比较常见的。
    被delphi调用的接口尽量用stdcall的。