Exception 找不到增压符号

Exception 找不到增压符号,exception,boost,ld,throw,Exception,Boost,Ld,Throw,我正在尝试编译/移植OpenOffice的旧版本。它使用BoostV1.34.1,它是源代码树的一部分。错误消息如下所示: Undefined symbols: "boost::throw_exception(std::exception const&)", referenced from: boost::detail::shared_count::shared_count<ScToken>(ScToken*)in detfunc.o ld: symbol(s

我正在尝试编译/移植OpenOffice的旧版本。它使用BoostV1.34.1,它是源代码树的一部分。错误消息如下所示:

Undefined symbols:
  "boost::throw_exception(std::exception const&)", referenced from:
      boost::detail::shared_count::shared_count<ScToken>(ScToken*)in detfunc.o
ld: symbol(s) not found
未定义的符号:
“boost::throw_异常(std::exception const&)”,引用自:
boost::detail::shared_count::detfunc.o中的shared_count(ScToken*)
ld:找不到符号
Boost对我来说是新事物,我还没有在网上找到多少东西来帮助我理解它。从错误消息中,我了解到我可能需要链接一个库。但是,
boost::throw_exception
是在没有匹配库(我可以找到)的头文件中定义的。为了好玩,我尝试在detfunc中包含
#include
,并使用符号链接将头文件放在同一个目录中,但没有成功


是否有我应该链接的库
-l
或包含路径
-I
?如何获取中引用的符号?

Boost希望项目要么在宏
Boost\u NO\u异常
未定义的情况下构建,要么定义函数
Boost::throw\u异常本身

从版本1.34.1中的

namespace boost
{

#ifdef BOOST_NO_EXCEPTIONS

void throw_exception(std::exception const & e); // user defined

#else

//[Not user defined --Dynguss]
template<class E> inline void throw_exception(E const & e)  
{
    throw e;
}

#endif

} // namespace boost
namespace boost
{
#ifdef BOOST_无例外
void throw_异常(std::exception const&e);//用户定义
#否则
//[非用户定义--Dynguss]
模板内联无效抛出异常(E const&E)
{
投掷e;
}
#恩迪夫
}//名称空间提升
Boost的配置头将决定是否定义宏。看起来它可以归结为您正在使用的编译器,但可能还有其他因素。查看
boost/config/compiler/
文件夹中与编译器对应的头文件,然后在其中搜索
boost\u NO\u异常。
#define
应该有一些条件来帮助解释Boost何时定义它。您可以配置生成以避免定义,并通过遇到的链接器错误


如果您无法更改编译器配置以避免定义,那么您可能将自己定义在OpenOffice代码中的某个地方。不过,我不熟悉该代码,因此我无法给出一个很好的建议。谢谢!我最终通读了
throw\u exception.hpp
,并准确地找到了您的答案。我不知道编译器标志的
boost/config/compiler/
,但可以肯定的是,
boost\u没有定义异常。