0

好的,这在 Linux 下的 GCC 中编译得很好。

char * _v3_get_msg_string(void *offset, uint16_t *len) {/*{{{*/
    char *s;
    memcpy(len, offset, 2);
    *len = ntohs(*len);
    s = malloc(*len+1);
    memset(s, 0, *len+1);
    memcpy(s, offset+2, *len);
    s[*len] = '\0';
    *len+=2;
    return s;
}/*}}}*/

但是,由于线路原因,我在将其移植到 Windows 时遇到了问题...

memcpy(s, offset+2, *len);

作为一个 void 指针,VC++ 不想偏移指针。CPP 不允许指针偏移的通常警告应该没有实际意义,因为整个项目是在 extern "C" 下构建的。

现在,这只是许多功能中的一种,找到答案将使它们全部得到修复。我真的不想从头开始重写库项目,我不想在 MinGW 下构建。必须有一种方法可以做到这一点,我错过了,在谷歌中找不到。

4

1 回答 1

2

好吧,你不能用 void* 做指针运算,这在 GCC 下编译是荒谬的。尝试memcpy(s, ((char*)offset)+2,*len);

于 2010-09-17T06:37:20.617 回答