为什么这需要Boost lib文件?

时间:2016-02-15 18:18:47

标签: c++ boost

我使用ASIO库制作udp发送包装器。目的是让另一个应用程序使用它来轻松发送3个特定的udp消息。

我创建了一个.lib文件,它基本上是一个包装ASIO函数的导出实用程序类。

为了测试我的lib,我还制作了一个小命令行应用程序,它链接到我的lib,创建导出的类并调用send函数。

但是,测试应用程序需要链接到libboost_system-vc100-mt-gd-1_55.lib,但我创建的实际包含Boost代码的lib文件却没有。

为什么会发生这种情况?我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

.lib文件,静态库,只是一组目标文件,它不是可执行实体。它没有联系,因此它不需要解析它的未解决的符号。 只有与其链接的可执行文件或共享库(DLL)才需要依赖项(在本例中为测试代码)。

所以没有问题,或许您打算将您的库捆绑为共享库而不是静态库?

答案 1 :(得分:0)

由于使用exception/error management,大多数提升库都依赖于QString expression_string("3 + sqrt(5) + pow(3,2) + log(5)"); QScriptEngine expression; double my_val=expression.evaluate(expression_string).toNumber();

boost::system肯定会使用它。

测试运行器应用程序需要链接所有内容,因为它将成为(静态或动态链接)可执行文件,并且所有引用都需要解析。

答案 2 :(得分:0)

Boost :: Asio库(仅来自同一作者)可用作仅限标题的独立版本。

有关详细信息和比较,请参阅他的think-async.com网站。当您不需要(或希望)在Boost上具有链接时依赖性时,独立版本很有用。更多详情请见AsioStandalone页。

FWIW我把它捆绑给R程序员用作CRAN包AsioHeaders,因为没有链接'功能使跨平台使用特别有吸引力。

您可以为您的应用程序提供类似标题的解决方案。