我用Delphi写一个DELL给C++用
但以下函数写法在C++中都会出现错误
function GetTemperatures(var Temperature: PChar): BOOL; stdcall; //调用崩溃
function GetTemperatures( Temperature: PChar): BOOL; stdcall; //调用后为空值但是我这样写一点问题都没有function GetTemperatures(): PChar; stdcall; //调用成功 返回正确但我现在想返回2个值 一个是传递的参数,一个是调用的结果 怎么写 请指教!
但以下函数写法在C++中都会出现错误
function GetTemperatures(var Temperature: PChar): BOOL; stdcall; //调用崩溃
function GetTemperatures( Temperature: PChar): BOOL; stdcall; //调用后为空值但是我这样写一点问题都没有function GetTemperatures(): PChar; stdcall; //调用成功 返回正确但我现在想返回2个值 一个是传递的参数,一个是调用的结果 怎么写 请指教!
BOOL __stdcall GetTemperatures(const char * Temperature, int Len);
Temperature的内存由C++配置,并且传入已经分配的内存大小。在Delphi当中复制内存到Temperature这个字符串指针指向的内存当中,并判别Len(实际分配出来的内存大小)防止越界。最终内存由C++程序释放。
应该在接口部分声明 var Temperature: PChar
然后再 function GetTemperatures( Temperature: PChar): BOOL; stdcall;
因为如果在函数上声明变量 函数结束后变量就释放了
肯定取不到值的 应该在接口部分声明 当dll的声明周期结束时才释放。