编译使用“Meschach”库的模块时从stl抛出的错误

时间:2010-02-15 03:42:53

标签: c++ stl

我正在研究一个使用共享库的模块,而共享库又有一个链接到它的静态库。共享库构建工作正常并生成.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文件有关,但无法确定它。该文件可以找到here

1 个答案:

答案 0 :(得分:2)

做一些谷歌搜索似乎Meschach库有一个名为catch的宏(由matrix2.h间接包含定义的err.h)导致c ++代码异常捕获失败。 试试

#undef catch 

完成包括meschach标头后,看看是否效果更好。