【问题标题】:How to integrate boost thread(source files) into my own project如何将 boost 线程(源文件)集成到我自己的项目中
【发布时间】:2013-03-06 09:20:13
【问题描述】:

我想要的是将关于boost线程的源文件(所有必要的头文件和源文件)放入我自己的项目中,这样其他人就不需要再配置对boost的支持了。构建系统由 CMake 制作。

最近我正在尝试将boost线程更新到实际版本1.53,但是新版本的boost线程无法在windows中内置。(它在linux下工作)

我集成boost线程的工作很简单,我只是把boost::thread需要的所有源文件放在一个文件夹中(包括boost::system的源文件),并为所有这些源文件制作一个DLL . (使用构建选项 BOOST_THREAD_BUILD_DLL)

但是当上面构建的 dll 库链接到我自己的代码时,我得到了一些未解决的 boost::system 引用错误,例如:

"unresolved reference to error_category xxxx"

但是构建的库包含来自 boost::system 的源文件,我不知道为什么会出现这样的错误。你们能给我一些提示吗?非常感谢,我已经花了很多时间来解决这个令人作呕的问题:(

【问题讨论】:

  • 为什么不简单地将 boost 线程列为依赖项,并让用户安装它? (或使用您的代码发布编译版本)
  • boost 有一个自己的工具可以实际工作。我以前用过。
  • 谢谢大家。这不是我自己决定的,在我看来,我想将 boost 线程列为外部依赖项:( @JohannesSchaub-litb 你能告诉这个工具吗?
  • 您想重新分发不依赖于 Boost 的源代码,还是重新分发包含 boost 线程的可执行文件?在最新情况下,只需使用到 Boost 库的静态链接
  • @PaoloBrandoli 我想在不依赖 Boost 的情况下重新分发源代码,boost::thread 将在项目内部构建。

标签: c++ boost dll cmake boost-thread


【解决方案1】:

正如 Johannes 在他的评论中指出的那样,BCP 工具正是为了做到这一点而设计的:

bcp 实用程序是一种用于提取 Boost 子集的工具,对于希望将其库与 Boost 分开分发的 Boost 作者,以及希望将 Boost 子集与他们的应用程序一起分发的 Boost 用户,它非常有用。

【讨论】:

  • 非常感谢,正是我需要的,我稍后试试:)
  • 嗨,@JonathanWakely BCP 仅从 Boost 中单独提取某个部分的必要文件,但头文件中定义的奇怪而复杂的宏仍保留在代码的单独部分中。当我使用 BCP 提取的代码时,我遇到了和以前一样的错误。
猜你喜欢
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
相关资源
最近更新 更多