2010-05-27 2 views
1

Je souhaite utiliser la bibliothèque CImg pour le traitement d'image dans mon projet actuel. J'utilise le bâtisseur de CodeGear C 2009. J'inclus CImg.h dans le fichier source et de mettre dans le code suivant:Problèmes de compilation CImg dans Codegear 2009

int rows =5; 
int cols = 5; 

CImg<double> img(rows,cols); 

je reçois l'erreur suivante:

[BCC32 Error] CImg.h(39159): E2285 Could not find a match for 'CImg<unsigned char>::move_to<t>(const CImg<unsigned char>)'

Est-ce que quelqu'un sait s'il y a #define Je devrais utiliser lors de la construction dans Codegear C++ Builder 2009. Ou est-ce simplement incompatible?

Répondre

2

Une bibliothèque de 40 000 lignes contenue dans un seul fichier d'en-tête? Cela semble être une mauvaise idée ...

Quoi qu'il en soit, malheureusement, C++ Builder 2009 n'est pas un très bon compilateur C++, il échouera donc souvent à gérer des constructions C++ autrement légales. (Il n'est pas inhabituel que les compilateurs C++ ne gèrent pas correctement un aspect ou un autre du standard C++, simplement parce que C++ est un langage si compliqué.)

Lorsque cela se produit, vous devez d'abord trouver une autre bibliothèque. compilateur, attendez une nouvelle version de C++ Builder et, espérons-le, améliorez-la ou essayez de modifier la bibliothèque pour qu'elle fonctionne.

Dans ce cas, si vous décidez d'essayer de faire le travail de la bibliothèque, les modifications suivantes devraient vous aider à démarrer:

  • Pour la version du modèle de `move_to` (ligne 9145 dans CImg 1.3.4) , C++ Builder ne parvient pas à détecter t en tant que paramètre de modèle dans le paramètre `move_to`. Modifier la déclaration de fonction de la version de type sécurisé actuelle:
     
        template<typename t> 
        CImg<t>& move_to(CImg<t>& img) { 
    
    la plus simple
     
        template<typename t> 
        t& move_to(t& image) { 
    
  • Aide C++ comprendre Builder les paramètres appropriés de modèle pour l'appel draw_text en ligne 39163: remplacer draw_text(...) avec draw_text<unsigned char,unsigned char>(...).

Il y a plus d'erreurs de compilateur que seulement deux; vous devrez également ajuster le code source CImg pour ceux-ci.

Si vous êtes en mesure de tout faire fonctionner, alors une fois que vous avez terminé, vous pouvez voir si le projet CImg est intéressé par l'intégration de vos modifications pour ajouter le support C++ Builder à leur version officielle.

+0

Merci Josh. Cependant, je n'ai pas vraiment envie de fouiller dans la bibliothèque. Il construit en VS 2005. Donc, je viens de faire une DLL compatible compilateur cross à la place. – Seth

Questions connexes