返回char数组
谁的dll中有返回char数组的部分代码参考一下 问题点数:30、回复次数:4Top
1 楼xrdsheng(旭日东升)回复于 2005-09-27 12:42:02 得分 25
返回char数组最好不要在函数里面分配空间,这样不利于内存空间释放。
可以
char *func(char *str,int len)
{
...//处理str数组
return str;
}
int main()
{
char p[100];
char *result;
result = func(p,100);
}Top
2 楼haiqian119(海嵌)回复于 2005-09-27 16:30:01 得分 0
//函数入口函数
char str[15];
extern "C" __declspec(dllexport) __stdcall char WimDev_DataType(int VehicleID) //取指定序号车辆的轴型
{
memcpy(str,FormMain.DataType(VehicleID),15);
return *str;
}
//调用的类
struct S_MESSAGE //信息
{
bool flag;
int data_length; //数据桢长
struct CARTIME car_time;
long car_speed; //速度
int car_Aa; //加速度
int car_Count; //轴数
int car_ZZS; //轴组数
int car_Width; //总重
char car_type[15];
};
class TFormMain
{
public:
struct S_MESSAGE RecvData[10];
char* DataType(int VehicleID); //取指定序号车辆的轴型
}
extern TFormMain FormMain;
//CPP
char* TFormMain::DataType(int VehicleID) //取指定序号车辆的轴型
{
if((VehicleID > 0)&&(VehicleID < carNum+1))
return RecvData[VehicleID].car_type;
else return NULL;
}
可是调用的时候就是提示错误!写成char* WimDev_DataType(int VehicleID)竟然执行通不过!
不知道该怎么办?Top
3 楼kprzen(小康)回复于 2005-09-27 16:42:52 得分 5
UPTop
4 楼haiqian119(海嵌)回复于 2005-09-28 11:32:46 得分 0
//dll入口函数
char str[15];extern "C" __declspec(dllexport) char* /*__stdcall*/ WINAPI WimDev_DataType(int VehicleID)
{
char * pStr;
pStr = FormMain.DataType(VehicleID);
if( pStr == NULL ) return NULL;
else
{
memcpy(&str,pStr,15);
return str;
}
}
谢谢网友的支持与解疑!Top




