OVH Cloud OVH Cloud

Compilation de CGAL avec Visual C++ Express 2005

4 réponses
Avatar
sebastien.ramage
Bonjour,
J'essai de compiler l'exemple Alpha_shapes_2 fournis avec CGAL avec
Microsoft Visual C++ Express 2005
et malheureusement j'obtiens 2 erreurs et j'ignore ce qui peut se
passer.

qqn peut m'aider?


Compiling...
alpha_shapes_2.C
..\..\include\CGAL/FPU.h(360) : warning C4996: '_controlfp' was
declared deprecated
C:\Program Files\Microsoft Visual Studio
8\VC\include\float.h(88) : see declaration of '_controlfp'
Message: 'This function or variable may be unsafe. Consider
using _controlfp_s instead. To disable deprecation, use
_CRT_SECURE_NO_DEPRECATE. See online help for details.'
..\..\include\CGAL/FPU.h(368) : warning C4996: '_controlfp' was
declared deprecated
C:\Program Files\Microsoft Visual Studio
8\VC\include\float.h(88) : see declaration of '_controlfp'
Message: 'This function or variable may be unsafe. Consider
using _controlfp_s instead. To disable deprecation, use
_CRT_SECURE_NO_DEPRECATE. See online help for details.'
Linking...
msvcprt.lib(MSVCP80.dll) : error LNK2005: "class std::basic_ostream > &
__cdecl std::operator<< >(class std::basic_ostream > &,char const *)"
(??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z)
already defined in alpha_shapes_2.obj
Release/alpha_shapes_2.exe : fatal error LNK1169: one or more multiply
defined symbols found

4 réponses

Avatar
Jean-Marc Desperrier
wrote:
J'essai de compiler l'exemple Alpha_shapes_2 fournis avec CGAL avec
Microsoft Visual C++ Express 2005


S'agit-il de ceci ? :
http://www.cs.ualberta.ca/~ghali/courses/texts/CGAL/examples/html/Alpha_shapes_2/

et malheureusement j'obtiens 2 erreurs et j'ignore ce qui peut se
passer.

['This function or variable may be unsafe. Consider
using _controlfp_s instead. To disable deprecation, use
_CRT_SECURE_NO_DEPRECATE.] x2


Oublie cela ou plutôt positionne l'option pour qu'il arrête de te mettre
ce warning.

msvcprt.lib(MSVCP80.dll) : error LNK2005: "class std::basic_ostream > &
__cdecl std::operator<< >(class std::basic_ostream > &,char const *)"
(??$?6U?$@std@@@std@@YAAAV?$?$@std@@@@)
already defined in alpha_shapes_2.obj


Ici l'erreur. D'après Visual C++, ton code essaie de redéfinir la
version de opérateur '<<' qui permet d'envoyer un 'const char*' dans un
'std::basic_ostream'. Ce qui paraît effectivement curieux.

Avatar
sebastien.ramage
il s'agit effectivement de






S'agit-il de ceci ? :
http://www.cs.ualberta.ca/~ghali/courses/texts/CGAL/examples/html/Alpha_s hapes_2/


il s'agit effectivement de cette source



D'après Visual C++, ton code essaie de redéfinir la
version de opérateur '<<' qui permet d'envoyer un 'const char*' dans un
'std::basic_ostream'. Ce qui paraît effectivement curieux.


j'ai bien quelques notion de C++ mais ça s'arrête là d'où mon appel
à l'aide.
Je développe en python et le wrapper CGAL n'étant pas compatible avec
Python 2.5 je cherche à créer une DLL que je pourrais exploiter.
J'ai bien tenter de recompiler le wrapper lui même mais là j'obtiens
d'autre erreur du genre:

Py_convex_hull_2.cpp(92) : error C2039: 'list' : is not a member of
'std

voici la ligne en question :
typedef typename std::list<Point_2>::iterator OutputItPoints;
J'ai tenter de contacter les développeur de Python-CGAL mais ils m'ont
renvoyé sur une mailing-list où il ne se passe rien...


Bref si j'arrive à compiler cette exemple alors je pourrais peut-être
créer ma DLL et enfin utiliser les quelques fonction CGAL qui
m'intéresse.

Merci de ton aide
si tu trouve qqc ça m'aiderai beaucoup

Avatar
sebastien.ramage
en cherchant un peu j'ai réussi à compiler l'exemple !!
avec l'option /clr
j'otiens 132 warnings m'informant que __fastcall n'est pas compatible
avec /clr et que je devrais utiliser __stdcall à la place
mais ça fonctionne !
j'ignore totalement ce que /clr implique mais déjà ça me rassure, ce
n'est qu'un problème de compilation, toutes les sources sotn là et
fonctionne.

je vais retenter de compiler le wrapper en bidouillant un peu, avec un
peu de change c'est peut-être le même problème

Seb






il s'agit effectivement de






S'agit-il de ceci ? :
http://www.cs.ualberta.ca/~ghali/courses/texts/CGAL/examples/html/Alpha _shapes_2/


il s'agit effectivement de cette source



D'après Visual C++, ton code essaie de redéfinir la
version de opérateur '<<' qui permet d'envoyer un 'const char*' dans un
'std::basic_ostream'. Ce qui paraît effectivement curieux.


j'ai bien quelques notion de C++ mais ça s'arrête là d'où mon app el
à l'aide.
Je développe en python et le wrapper CGAL n'étant pas compatible avec
Python 2.5 je cherche à créer une DLL que je pourrais exploiter.
J'ai bien tenter de recompiler le wrapper lui même mais là j'obtiens
d'autre erreur du genre:

Py_convex_hull_2.cpp(92) : error C2039: 'list' : is not a member of
'std

voici la ligne en question :
typedef typename std::list<Point_2>::iterator OutputItPoints;
J'ai tenter de contacter les développeur de Python-CGAL mais ils m'ont
renvoyé sur une mailing-list où il ne se passe rien...


Bref si j'arrive à compiler cette exemple alors je pourrais peut-être
créer ma DLL et enfin utiliser les quelques fonction CGAL qui
m'intéresse.

Merci de ton aide
si tu trouve qqc ça m'aiderai beaucoup



Avatar
Loïc Joly
en cherchant un peu j'ai réussi à compiler l'exemple !!
avec l'option /clr
j'otiens 132 warnings m'informant que __fastcall n'est pas compatible
avec /clr et que je devrais utiliser __stdcall à la place
mais ça fonctionne !
j'ignore totalement ce que /clr implique mais déjà ça me rassure, ce
n'est qu'un problème de compilation, toutes les sources sotn là et
fonctionne.


/clr implique que ton code n'est plus compilé en C++, mais dans un
langage (nommé C++/CLI si tu utilises la version 2005 de visual studio,
managed C++ sinon, ce sont deux langages différents) spécifique
Microsoft, qui permet d'écrire du code passerelle entre le monde du C++
et le monde .NET.

A priori, tu n'en a pas besoin en l'occurence.

Je pense que ton problème pourrais probablement se résoudre avec les
optinos de compilation /MTd /MD.... Qui définissent quelle version de la
bibliothèque standard doit être utilisée (multithread ou non, debug ou
release...). Normalement, tout doit être compilé avec les mêmes options,
et j'ai l'impression que ce n'est pas le cas ici.

--
Loïc