Ошибки, сгенерированные из stl при компиляции модуля, который использует библиотеку "Meschach" - PullRequest
1 голос
/ 15 февраля 2010

Я работаю над модулем, который использует общую библиотеку, с которой, в свою очередь, связана статическая библиотека. Сборка общей библиотеки работает нормально и генерирует .so. Когда я пытаюсь использовать его в модуле, на этапе компиляции я получаю множество ошибок, большинство из которых основаны на stl (в частности, на stl) Ошибки выглядят так:

In file included from /usr/include/c++/4.3/list:68,                             
                 from /home/gayan/LHIMo/LHI/src/CalcEngine/include/JuncNodeInfo.h:11,                                                                           
                 from /home/gayan/LHIMo/LHI/src/CalcEngine/include/RiverFlowParameter.h:11,                                                                     
                 from Main.cpp:11:                                              
/usr/include/c++/4.3/bits/stl_list.h:465:11: error: macro "catch" requires 3 arguments, but only 1 given

Это дано в большинстве мест, где используется список, вектор или карта. Пожалуйста, помогите мне решить эту проблему.

Пример кода: "CalcEngine.h" в библиотеке:

#ifndef LHI_CALCENGINE_H_
#define LHI_CALCENGINE_H_

extern "C"{
#include <matrix2.h>
}

class CalcEngine{

public:

protected:

};


#endif /* LHI_CALCENGINE_H_ */

Main.cpp в приложении:

#include <iostream>
#include <CalcEngine.h>
#include <list>  // The compilation fails as soon as this is added

int main(int argc, char** argv){

    return -1;
}

Я чувствую, что это как-то связано с файлом matrix2.h, но не смог точно это определить. Файл можно найти здесь

1 Ответ

2 голосов
/ 15 февраля 2010

При поиске в Google кажется, что в библиотеке Meschach есть макрос catch (определенный err.h косвенно включается в matrix2.h), что приводит к сбою исключения кода C ++. Попробуйте

#undef catch 

после того, как вы закончите, включая заголовки meschach и посмотрите, работает ли лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...