在dll中定义数据结构
typedef struct {
char system_type[2];
unsigned char new;
unsigned long number;
unsigned long points;
unsigned long offset;
unsigned long lsb;
unsigned long msb;
unsigned short msg_number;
unsigned char band;
unsigned char length;
unsigned char reserve[2];
} dataobject;
sizeof (dataobject)应该是29,在Test GUI中令
int datalen;
datalen=sizeof(object);//datalen=29
接着调用dll中的导出函数:
int msglen;
msglen=msgdll_create_data_msg((unsigned char *)databuf);MSGDllxxport ssize_t msgdll_create_data_msg( unsigned char *msg)
{
ssize_t msg_len;
unsigned char *p;
dataobject rawdata;
p = msg ;
memcpy(p,&rawdata,sizeof(dataobject));
//这里的sizeof(dataobject)=32,找不出原因????
msg_len += sizeof(dataobject);
return msg_len;}
程序编译都没有问题,warning也都排除了,dll路径没有错,百思不得其解啊
typedef struct {
char system_type[2];
unsigned char new;
unsigned long number;
unsigned long points;
unsigned long offset;
unsigned long lsb;
unsigned long msb;
unsigned short msg_number;
unsigned char band;
unsigned char length;
unsigned char reserve[2];
} dataobject;
sizeof (dataobject)应该是29,在Test GUI中令
int datalen;
datalen=sizeof(object);//datalen=29
接着调用dll中的导出函数:
int msglen;
msglen=msgdll_create_data_msg((unsigned char *)databuf);MSGDllxxport ssize_t msgdll_create_data_msg( unsigned char *msg)
{
ssize_t msg_len;
unsigned char *p;
dataobject rawdata;
p = msg ;
memcpy(p,&rawdata,sizeof(dataobject));
//这里的sizeof(dataobject)=32,找不出原因????
msg_len += sizeof(dataobject);
return msg_len;}
程序编译都没有问题,warning也都排除了,dll路径没有错,百思不得其解啊
{
...
};#pragma pack(pop) // 恢复之前的对齐设置
struct YOURSTRCT
{
};
...
#pragma pack(pop)
另外在PROJECT- C++ CODE GENERATION - STRUCT MEMBER ALIGNMENT 中也可以修改。