Question

Ok, cette compile bien dans GCC sous Linux.

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;
}/*}}}*/

Cependant, je vais avoir un problème portage vers Windows, en raison de la ligne ...

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

Être un pointeur vide, VC ++ ne veut pas compenser le pointeur. La mise en garde habituelle que le RPC ne permet pas de compensation de pointeur doit être sans objet, comme l'ensemble du projet est en cours de construction sous extern « C ».

Maintenant, ceci est seulement 1 fonction dans un grand nombre, et de trouver la réponse à cela leur permettra à tous d'être fixés. Je préférerais vraiment ne pas avoir à réécrire le projet de bibliothèque à partir du sol, et je ne veux pas construire sous MinGW. Il doit y avoir un moyen de faire ce que je suis absent, et ne pas trouver dans Google.

Était-ce utile?

La solution

Eh bien, vous ne pouvez pas faire avec pointeur Arithmétique void *, il est ridicule que cette compile sous GCC. essayez memcpy(s, ((char*)offset)+2,*len);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top