build com g ++ falha: o que faz erro: declaração de '… throw…' tem um especificador de exceção diferente… significa

1

Estou tentando instalar uma "caixa de ferramentas" para um dispositivo a laser ( link ) e estou recebendo esta mensagem quando tento construí-la (comando na seção 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!

Qualquer pista sobre o que eu poderia fazer para resolver isso é apreciada. Uma questão é que esta caixa de ferramentas foi escrita há alguns anos quando o Ubuntu 7 estava atual, então eu suponho que isso possa ser parte do problema!

obrigado antecipadamente

    
por Steve G 21.08.2016 / 08:22

2 respostas

0

Existem declarações duplas para um golpe de SickToolbox :: SickLMSBufferMonitor :: ~ SickLMSBufferMonitor () um em

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

e outro em

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

abra um editor nos dois arquivos e verifique o que faz mais sentido. Você pode tentar descomentar uma declaração e ver se isso funciona. Ou entre em contato com o autor da fonte.

    
por 0x0C4 21.08.2016 / 08:35
0

Então parece a linha:

    SickLMSBufferMonitor::~SickLMSBufferMonitor( ) { }

foi substituído por

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

para resolver este problema.

    
por Steve G 02.09.2016 / 14:02