Forum Solarus-Games francophone

Jeux amateurs => La création de jeux en général => Discussion démarrée par: Sam101 le 10 Juillet 2008 à 18:34

Titre: Problème avec SDL_net et Debian
Posté par: Sam101 le 10 Juillet 2008 à 18:34
Salut ! J'ai un petit problème de C++  :mrgreen:. J'ai un programme serveur qui compile et fonctionne parfaitement chez moi, mais qui doit être recompilé pour fonctionner sur mon serveur (Je suis sous Ubuntu 8.04 et mon serveur sous Debian Etch) a cause de différences de libC.
Seulement... Voila, sur mon serveur, ça compile pas  :ninja:

Citation
root@r12166:/home/sam101/tlow/src# make
g++ -o tlowS main.cpp map.cpp player.cpp pnj.cpp server.cpp world.cpp data/char2int.cpp data/int2char.cpp -lSDLmain -lSDL -lSDL_net -lmysqlclient
server.cpp: In function 'int Client(void*)':
server.cpp:72: error: invalid conversion from 'const void*' to 'void*'
server.cpp:72: error:   initializing argument 2 of 'int SDLNet_TCP_Send(_TCPsocket*, void*, int)'
server.cpp:113: error: invalid conversion from 'const void*' to 'void*'
server.cpp:113: error:   initializing argument 2 of 'int SDLNet_TCP_Send(_TCPsocket*, void*, int)'
server.cpp:120: error: invalid conversion from 'const void*' to 'void*'
server.cpp:120: error:   initializing argument 2 of 'int SDLNet_TCP_Send(_TCPsocket*, void*, int)'
[...]
server.cpp:308: error: invalid conversion from 'const void*' to 'void*'
server.cpp:308: error:   initializing argument 2 of 'int SDLNet_TCP_Send(_TCPsocket*, void*, int)'
server.cpp:310: error: invalid conversion from 'const void*' to 'void*'
server.cpp:310: error:   initializing argument 2 of 'int SDLNet_TCP_Send(_TCPsocket*, void*, int)'
server.cpp:316: error: invalid conversion from 'const void*' to 'void*'
server.cpp:316: error:   initializing argument 2 of 'int SDLNet_TCP_Send(_TCPsocket*, void*, int)'
La ligne en question est celle-ci
Citation
SDLNet_TCP_Send(client,send.c_str(),send.size());
Je sais que c_str() renvoie un const char*, mais pourquoi cela ne fonctionne  chez moi et pas sur mon serveur (j'utilise pourtant le même Makefile...).
Merci beaucoup ^^.
Titre: Re : Problème avec SDL_net et Debian
Posté par: mooglwy le 10 Juillet 2008 à 23:08
C'est bizarre parce qu'ubunu est basé sur debian.
Enfin c'est pas ici que tu devrais poser ta question.  :rolleyes:
Titre: Re : Problème avec SDL_net et Debian
Posté par: Geomaster le 10 Juillet 2008 à 23:18
Même makefile mais visiblement pas le même compilateur. L'un va te laisser couler ton problème de conversion tandis que l'autre va gueuler. Tu devrais plutôt chercher un autre moyen d'appeler ta méthode (en passant un argument correct par exemple ? :ninja: s'il n'aime pas les const char* alors passe lui un char* de même valeur) plutôt que de chercher d'où ça vient car là c'est une question de compilateurs permissifs ou non.
Titre: Re : Re : Problème avec SDL_net et Debian
Posté par: Sam101 le 11 Juillet 2008 à 09:56
Citation de: Geomaster le 10 Juillet 2008 à 23:18
Même makefile mais visiblement pas le même compilateur. L'un va te laisser couler ton problème de conversion tandis que l'autre va gueuler. Tu devrais plutôt chercher un autre moyen d'appeler ta méthode (en passant un argument correct par exemple ? :ninja: s'il n'aime pas les const char* alors passe lui un char* de même valeur) plutôt que de chercher d'où ça vient car là c'est une question de compilateurs permissifs ou non.
Dans les deux cas, c'est G++ installé exactement de la même manière...

Sinon on m'a donné la solution :
Citation
SDLNet_TCP_Send(client,const_cast<char*>(buffer.c_str()),buffer.size());
Et ça supprime le const ^^.
Je pense que je vais faire une macro, c'est lourd a ecrire a chaque fois :mrgreen:.
Titre: Re : Problème avec SDL_net et Debian
Posté par: Geomaster le 11 Juillet 2008 à 10:06
Même version exactement ? Vu que ce n'est pas le même OS, on ne sait jamais...

Donc comme je disais, il fallait mieux trouver un moyen de contourner le problème que de chercher d'où il venait. La preuve, dans un cas ça marche et pas dans l'autre. Enfin, maintenant tu as une solution ^^
Titre: Re : Re : Problème avec SDL_net et Debian
Posté par: Sam101 le 11 Juillet 2008 à 10:52
Citation de: Geomaster le 11 Juillet 2008 à 10:06
Même version exactement ? Vu que ce n'est pas le même OS, on ne sait jamais...

Donc comme je disais, il fallait mieux trouver un moyen de contourner le problème que de chercher d'où il venait. La preuve, dans un cas ça marche et pas dans l'autre. Enfin, maintenant tu as une solution ^^
Je sais pas, par contre la version de GLIBC est pas la même entre les deux (2.3.X pour Debian et 2.7.X pour Ubuntu il me semble) ^^.

En même temps, Ubuntu est une variante de Debian donc bon..

Comme quoi compiler sur plusieurs machines ça peut servir, l'erreur venait bien de moi  :mrgreen:.

EDIT:Je crois qu'il est a deplacer le topic ^^.
Titre: Re : Problème avec SDL_net et Debian
Posté par: BenObiWan le 11 Juillet 2008 à 11:03
D'après http://packages.debian.org/stable/devel/ sur Debian Etch on en est à g++ 4.1.1 Sur mon Ubuntu j'ai la 4.2.3.
Au niveau des Glibs c'est bien 2.7 pour Ubuntu, et pour Etch la 2.3.6
Bref tu as pas mal de chance que le comportement soit un peu différent.
Titre: Re : Re : Problème avec SDL_net et Debian
Posté par: Sam101 le 11 Juillet 2008 à 11:19
Citation de: BenObiWan le 11 Juillet 2008 à 11:03
D'après http://packages.debian.org/stable/devel/ sur Debian Etch on en est à g++ 4.1.1 Sur mon Ubuntu j'ai la 4.2.3.
Au niveau des Glibs c'est bien 2.7 pour Ubuntu, et pour Etch la 2.3.6
Bref tu as pas mal de chance que le comportement soit un peu différent.
Pas mal de chance ou pas de chance ?  :ninja:.
Titre: Re : Re : Re : Problème avec SDL_net et Debian
Posté par: Geomaster le 11 Juillet 2008 à 11:36
Citation de: Sam101 le 11 Juillet 2008 à 11:19
Citation de: BenObiWan le 11 Juillet 2008 à 11:03
D'après http://packages.debian.org/stable/devel/ sur Debian Etch on en est à g++ 4.1.1 Sur mon Ubuntu j'ai la 4.2.3.
Au niveau des Glibs c'est bien 2.7 pour Ubuntu, et pour Etch la 2.3.6
Bref tu as pas mal de chance que le comportement soit un peu différent.
Pas mal de chance ou pas de chance ?  :ninja:.

Pas mal de chances, genre c'est très fortement probable quoi.