Ibex and Visual Studio

Forums:

Hi,
Ibex 2.20 is available, nice, interesting.
Before the new release, I remember explanations about using Ibex and Visual Studio, the Microsoft C++ compiler.
I am no more able to find again the information since the web site adversites Ibex 2.20.
1) Is there a way to find again this information ?
2) Is there still someone using Ibex with Visual Studio ?
Thank you for your answers and advices.
Stéphane.

slemenec's picture

Hi,
Almost compiled;
I followed explanations provided by Jordan about previous tests based on Ibex.2.1.10.
However, I have still one or two last errors : It seems something wrong between the standard utility.h / .cpp files and
function\ibex_NumConstraint.cpp ???
Please, could you provide me with some insights / explanations about what happens.
Thanks,
Stéphane.
1>------ Début de la génération : Projet : ibex, Configuration : Debug x64 ------
1>  ibex_NumConstraint.cpp
1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initialisation' : impossible de convertir de 'int' en 'const ibex::ExprNode *'
1>          La conversion d'un type intégral en type pointeur nécessite reinterpret_cast, un cast de style C ou un cast de style fonction
1>          c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(247) : voir la référence à l'instanciation de la fonction modèle 'std::_Pair_base<_Ty1,_Ty2>::_Pair_base<_Ty,_Ty>(_Other1 &&,_Other2 &&)' en cours de compilation
1>          with
1>          [
1>              _Ty1=const ibex::ExprNode *,
1>              _Ty2=const ibex::Interval *,
1>              _Ty=int,
1>              _Other1=int,
1>              _Other2=int
1>          ]
1>          src\function\ibex_NumConstraint.cpp(111) : voir la référence à l'instanciation de la fonction modèle 'std::pair<_Ty1,_Ty2>::pair<int,int>(_Other1 &&,_Other2 &&)' en cours de compilation
1>          with
1>          [
1>              _Ty1=const ibex::ExprNode *,
1>              _Ty2=const ibex::Interval *,
1>              _Other1=int,
1>              _Other2=int
1>          ]
...

slemenec's picture

Hi,
Similar error occurs when compiling Expr.cpp (symbolic) :
if (!expr_index) return pair<const ExprSymbol*, int>(NULL,-1);
    else {
        pair<const ExprSymbol*, int> p = expr_index->symbol_shift();
            symbol=p.first;
            expr_shift=p.second;
    }
problem with pair definition in the standard utility.h definition ?
1>------ Début de la génération : Projet : ibex, Configuration : Debug x64 ------
1>  ibex_Expr.cpp
1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initialisation' : impossible de convertir de 'int' en 'const ibex::ExprSymbol *'
1>          La conversion d'un type intégral en type pointeur nécessite reinterpret_cast, un cast de style C ou un cast de style fonction
1>          c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(247) : voir la référence à l'instanciation de la fonction modèle 'std::_Pair_base<_Ty1,_Ty2>::_Pair_base<_Ty,_Ty>(_Other1 &&,_Other2 &&)' en cours de compilation
1>          with
1>          [
1>              _Ty1=const ibex::ExprSymbol *,
1>              _Ty2=int,
1>              _Ty=int,
1>              _Other1=int,
1>              _Other2=int
1>          ]
1>          src\symbolic\ibex_Expr.cpp(98) : voir la référence à l'instanciation de la fonction modèle 'std::pair<_Ty1,_Ty2>::pair<int,int>(_Other1 &&,_Other2 &&)' en cours de compilation
1>          with
1>          [
1>              _Ty1=const ibex::ExprSymbol *,
1>              _Ty2=int,
1>              _Other1=int,
1>              _Other2=int
1>          ]
1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base<_Ty1,_Ty2>::first' : impossible d'initialiser le membre
1>          with
1>          [
1>              _Ty1=const ibex::ExprSymbol *,
1>              _Ty2=int
1>          ]
1>          c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(166) : voir la déclaration de 'std::_Pair_base<_Ty1,_Ty2>::first'
1>          with
1>          [
1>              _Ty1=const ibex::ExprSymbol *,
1>              _Ty2=int
1>          ]
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
I need to extend definitions in utility.h and mirror the standard file when compiling ? cast, reinterpret_cast to do ?
Thank you in advance for your help;
Regards,
Stéphane.
 
 

slemenec's picture

Hi,
set/ibex_SetLeaf.cpp encounters same errors with pair !
if (y.is_empty()) {
        return pair<SetNode*,SetLeaf*>(new SetLeaf(x_status),NULL);
    }
Stéphane.

slemenec's picture

Hi,
Finally, I decided to apply C cast on NULL where I encountered the problem.
Not sure it is the best solution.
Btw, I have also errors when compiling vibes.cpp (related to Vec2d, Vec4d definitions, not allowed).
I would be happy to have your comments / advices about this.
Regards,
Stépahne.