我使用ASIO库制作udp发送包装器。目的是让另一个应用程序使用它来轻松发送3个特定的udp消息。
我创建了一个.lib文件,它基本上是一个包装ASIO函数的导出实用程序类。
为了测试我的lib,我还制作了一个小命令行应用程序,它链接到我的lib,创建导出的类并调用send函数。
但是,测试应用程序需要链接到libboost_system-vc100-mt-gd-1_55.lib,但我创建的实际包含Boost代码的lib文件却没有。
为什么会发生这种情况?我该如何解决这个问题?
答案 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,因为没有链接'功能使跨平台使用特别有吸引力。
您可以为您的应用程序提供类似标题的解决方案。