Bonjour à tous,
je ressors cette discussion car je ne m'en sors pas avec cette histoire de pow. Et maintenant, il me fais la même avec sqrt().
Alors donc, je situe le contexte:
Ma solution se découpe en 2 parties:
* Une lib que je peux modifier mais j'aimerais éviter. Cette lib encapsule la SDL, elle a pour but le développement de jeux vidéos. Elle gère l'affichage, le réseau et les inputs, ainsi que tout un tas de fonctionnalités diverses et variés. Elle est multi-plateforme, développée sous OsX, elle fonctionne (une fois compilée), sous linux et windows.
* Le projet de test qui utilise cette lib.
Le problème:
Visual 2005 n'accepte plus certaines fonctions. Je ne sais pas comment ça se fait, ni pourquoi ils ont fait ça, mais certaines fonctions ne passent plus à la compilation. Notamment la fonction pow qui ne passe plus lorsque des int sont passés en paramètre.
J'étais parvenu à résoudre le problème, en suivant vos conseils, en redéfinissant ma fonction pow ainsi:
int pow(int a, int b){return (int) pow( (double)a, (double)b );}
Avec cette horrible astuce, la lib compile.
Maintenant, lorsque je compile le projet de test, lui ne compile plus (alors qu'il compilait avant cette modif). Les 56793 erreurs que j'obtiens sont du style:
Error 1 error LNK2005: "int __cdecl pow(int,int)" (?pow@@YAHHH@Z) already defined in net.obj x_foot_log.obj
net.obj est généré par le projet de test en question. Il contient quelques classes et structures pour le réseau spécifiques à ce projet de test.
Voilà, je suis complètement perdu. Je n'y comprend rien à tout ceci. Vous avez une idée de ce qui se passe là?
Partager