用DELPHI写的一个DLL,用DELPHI写的程序调用,可以有返回值,可用CB++确不能得到返回结果.函数原形:
function Send_receive(cIn: char; var pOut: pchar):integer;stcall;在DELPHI中调用参数pOut可以有正确返回值.但用C++BUILD写的程序去调用时,参数pOut没有返回值

解决方案 »

  1.   

    你不用写var的,指针就是指针,为什么还要用var????
    难道CB++有var参数的?!
      

  2.   

    呵呵,CB可能要用char** pOut才对
      

  3.   

    我把我所要表达的意思说一下:
    DLL是用DELPHI写的,公布出来一个函数,第一个参数为传入参数,第二个为传出参数.函数调用成功时返回1,否则为0. function Send_receive(cIn: char; var pOut: pchar):integer;stdcall;
    这样在用DELPHI写的程序调用用DELPHI写的DLL能够成功.
    但用C++写的程序调用用DELPHI写的DLL不能够成功,第二个为传出参数传出来是乱码.liang_z(千山一刀之忍者神龟),我如果不用VAR 那么在用DELPHI写的程序调用用DELPHI写的DLL不能够成功,第二个为传出参数传出来是空值.你可以测试一下.首先我也是你那样理解的.
      

  4.   

    function Send_receive(cIn: char; pOut: pchar):integer;stdcall;
      

  5.   

    outer2000(天外流星)兄:function Send_receive(cIn: char; pOut: pchar):integer;stdcall;
    试过了了,不说是C++中 第二个参数传不出来,就是DELPHI调,也传不出来.
      

  6.   

    __stdcall int Send_receive(char* cIn, char** pOut); // c++我不熟悉,大概这样
      

  7.   

    忘记了,C++好像还可以动用这个符号&,不过具体我真的不是非常记得,是不是这样?
    __stdcall int Send_receive(char* cIn, & char* pOut);
      

  8.   

    你的DLL中怎么写的啊,真的用得着VAR TMP:PCHAR啊;
      

  9.   

    我所要达到的目的是:调用一个函数传出3个参数返回值,参数的类型是char.就这么简单,只不过DLL是DELPHI写的,调用程序是C++写的,但现在就是不能达到目的.
      

  10.   

    现在我把它改成用数组,可只能传出一个参数.function send_receive(cIn :char; var cOut1,cOut2,cOut3:array of char):integer;stdcall可只有cOut1能够返回值,cOut2,cOut3就不能返回了.