在VC DLL中的 一个函数
char* test()
{
    return "123456";
}我在Delphi里用 function test():string;stdcall; external 'xx.dll'我发现我怎么调用,发现都无法得到返回直,很多情况下,都内存出错了!

解决方案 »

  1.   

    试试
    function test():PChar;stdcall; external 'xx.dll' xx.dll要和程序在同一目录下
      

  2.   

    function test():PChar;cdecl; external 'xx.dll' 
      

  3.   

    function test():pchar;cdecl; external 'xx.dll' ;最好不要试图返回char *,换用参数返回
    void test(char* buff,size_t &size) 

        char * result = "123456";
        size = size>strlen(result)?strlen(result):size;
        strncpy(buff,result,size);
    } procedure test(Buffer:PChar;var BuffLen:Integer);cdecl; external 'xx.dll';var
      buff: PChar;
      bufflen: Integer;
      str: String;
    begin
      bufflen := 10;
      GetMem(buff,bufflen);
      test(buff,bufflen);
      SetString(str,buff,bufflen);
      ShowMessage(str);
      FreeMem(buff);