1 votes

la construction avec g++ échoue : que signifie error : declaration of '.... throw ....' has a different exception specifier ... ?

J'essaie d'installer une "boîte à outils" pour un appareil laser ( http://sicktoolbox.sourceforge.net/docs/sicktoolbox-quickstart.pdf ) et j'obtiens ce message lorsque j'essaie de le construire (commande dans la section 5.2) :

    Building Sick LMS mex...
    Building with 'g++'.
    /home/ark3420/SICK/sicktoolbox-1.0.1/matlab/../c++/drivers/lms/sicklms-1.0/SickLMSBufferMonitor.cc
    :131:48: error: declaration of ‘SickToolbox::SickLMSBufferMonitor::~SickLMSBufferMonitor() throw 
    (SickToolbox::SickThreadException)’ has a different exception specifier
    In file included from /home/ark3420/SICK/sicktoolbox-1.0.1/matlab/../c++/drivers/lms/sicklms-1.0/SickLMS.hh:
    24:0,from /home/ark3420/SICK/sicktoolbox-1.0.1/matlab/../c++/drivers/lms/sicklms-1.0/SickLMSBufferMonitor.cc:24:0,
    /home/ark3420/SICK/sicktoolbox-1.0.1/matlab/../c++/drivers/lms/sicklms-1.0/SickLMSBufferMonitor.hh:44:5: error: 
    from previous declaration ‘SickToolbox::SickLMSBufferMonitor::~SickLMSBufferMonitor() noexcept (true)’
    ./build_mex: Build failed!

J'apprécie tout indice sur ce que je pourrais faire pour résoudre ce problème. Le problème est que cette boîte à outils a été écrite il y a quelques années, à l'époque d'Ubuntu 7, donc je suppose que cela peut faire partie du problème !

merci d'avance

0voto

0x0C4 Points 665

Il y a deux déclarations pour un thow de SickToolbox::SickLMSBufferMonitor::~SickLMSBufferMonitor() une dans

/home/ark3420/SICK/sicktoolbox-1.0.1/matlab/../c++/drivers/lms/sicklms-1.0/SickLMS.hh - line 24

et un autre dans

/home/ark3420/SICK/sicktoolbox-1.0.1/matlab/../c++/drivers/lms/sicklms-1.0/SickLMSBufferMonitor.hh - line 44

Ouvrez un éditeur aux deux fichiers et vérifiez celui qui a le plus de sens. Vous pouvez essayer de décommenter une déclaration et voir si cela fonctionne. Ou contactez l'auteur de la source.

0voto

Bob Siefkes Points 101

Donc on dirait que la ligne :

    SickLMSBufferMonitor::~SickLMSBufferMonitor( ) { }

a été remplacé par

    SickLMSBufferMonitor::~SickLMSBufferMonitor( ) throw (SickToolbox::SickThreadException) { }

pour résoudre ce problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X