我用Delphi写一个DELL给C++用 
但以下函数写法在C++中都会出现错误
function GetTemperatures(var Temperature: PChar): BOOL; stdcall;  //调用崩溃
function GetTemperatures( Temperature: PChar): BOOL; stdcall;     //调用后为空值但是我这样写一点问题都没有function GetTemperatures(): PChar; stdcall;  //调用成功 返回正确但我现在想返回2个值 一个是传递的参数,一个是调用的结果 怎么写 请指教!

解决方案 »

  1.   

    function GetTemperatures(const Temperature: PAnsiChar; Len: Integer); LONGBOOL; stdcall;
    BOOL __stdcall GetTemperatures(const char * Temperature, int Len);
    Temperature的内存由C++配置,并且传入已经分配的内存大小。在Delphi当中复制内存到Temperature这个字符串指针指向的内存当中,并判别Len(实际分配出来的内存大小)防止越界。最终内存由C++程序释放。
      

  2.   

    我好像搞清楚了,是我不应该在函数中声明变量 
    应该在接口部分声明 var Temperature: PChar
    然后再 function GetTemperatures( Temperature: PChar): BOOL; stdcall;
    因为如果在函数上声明变量 函数结束后变量就释放了
    肯定取不到值的 应该在接口部分声明 当dll的声明周期结束时才释放。