2017-09-28 48 views
0

Mise à jour: l'utilisation de catch 1.9.7 a résolu ce problème.Erreurs lors de la compilation de capture avec Visual Studio 2008

Je commence tout juste à utiliser catch et n'ai même pas pu compiler un projet de test simple. J'utilise Visual Studio 2008 et ai catch.hpp v1.10.0 (version de fichier unique).

J'ai créé un projet de test simple après le tutoriel de capture. main.cpp est le seul fichier et le code se compose de:

#define CATCH_CONFIG_MAIN 
#include "catch.hpp" 

TEST_CASE("test case 1") 
{ 
    REQUIRE(1==2); 
} 

Je reçois les erreurs suivantes quand je compile:

c:\utilities\catch\catchtest\catchtest\catch.hpp(1333) : warning C4181: qualifier applied to reference type; ignored 
c:\utilities\catch\catchtest\catchtest\catch.hpp(1838) : see reference to class template instantiation 'Catch::Internal::Evaluator<T1,T2,Op>' being compiled 
with 
[ 
    T1=const int &, 
    T2=const int &, 
    Op=IsEqualTo 
] 
c:\utilities\catch\catchtest\catchtest\catch.hpp(1836) : while compiling class template member function 'void Catch::BinaryExpression<LhsT,Op,RhsT>::endExpression(void) const' 
with 
[ 
    LhsT=const int &, 
    Op=IsEqualTo, 
    RhsT=const int & 
] 
c:\utilities\catch\catchtest\catchtest\main.cpp(8) : see reference to class template instantiation 'Catch::BinaryExpression<LhsT,Op,RhsT>' being compiled 
with 
[ 
    LhsT=const int &, 
    Op=IsEqualTo, 
    RhsT=const int & 
] 
c:\utilities\catch\catchtest\catchtest\catch.hpp(1333) : error C2529: 'lhs' : reference to reference is illegal 
c:\utilities\catch\catchtest\catchtest\catch.hpp(1333) : warning C4181: qualifier applied to reference type; ignored 
c:\utilities\catch\catchtest\catchtest\catch.hpp(1333) : error C2529: 'rhs' : reference to reference is illegal 
c:\utilities\catch\catchtest\catchtest\catch.hpp(1838) : error C2664: 'Catch::Internal::Evaluator<T1,T2,Op>::evaluate' : cannot convert parameter 1 from 'const int' to 'const int &(&)' 
with 
[ 
    T1=const int &, 
    T2=const int &, 
    Op=IsEqualTo 
] 
c:\utilities\catch\catchtest\catchtest\catch.hpp(1839) : error C2228: left of '.endExpression' must have class/struct/union 

Toute aide serait très apprécié. Je n'ai pas été en mesure de trouver quoi que ce soit dans la documentation de capture ou en ligne et je suis impatient de commencer avec elle.

Répondre

0

Le dernier maître de Catch est pour le compilateur C++ moderne et le compilateur Visual Studio 2008 est assez vieux maintenant. Il y a quelques commutateurs que vous pouvez utiliser pour déclasser certaines des caractéristiques:

https://github.com/philsquared/Catch/blob/master/docs/configuration.md

Essayez avec « CATCH_CONFIG_NO_CPP11 » défini avant capture # include'ing.

+0

Pas de chance, ont toujours les mêmes erreurs. – JMayer

0

Pour référence future: la prise en charge de MSVC 9 a été interrompue par this commit et l'annulation de b6e7c9bd7a160c07c5de894292022687895c17a3 (effectuée par-dessus) et celle-ci est suffisante pour résoudre le problème.