繁体   English   中英

Boost库的多重链接

[英]Multiple linkage of boost libraries

如果应用程序与一些boost的库链接,而另一个应用程序通过boost的链接编译,是否会出现像ODR这样的问题?

示例: foo.exeboost-*.libbar.lib ,以前在编译bar.lib时也与boost-*.lib链接。

就MSVC而言,库构建为多线程的。

我在使用静态链接的libcURL和OpenSSL中遇到了类似的问题。 libCURL库使用OpenSSL进行https下载,并且在编译时需要链接到OpenSSL。 我的观察是:

  • 如果将libcURL链接到OpenSSL,则当它使用libCURL时,无需将程序链接到OpenSSL
  • 如果将libcURL链接到OpenSSL,并且还将程序链接到OpenSSL,则MSVC将抱怨存在多个冲突的实现。

我建议您尝试在没有该Boost库的情况下链接到bar.lib ,然后查看它是否有效。 如果可以编译,那么没有它,你会很好。 如果收到未定义的参考错误,则需要链接到它。 那是最坏的情况。

在同一过程中混合多个版本的Boost(包括仅包含标头的库)总是一个坏主意。 Boost既不提供API也不提供ABI保证,如果两个不同的版本相互接触,则可能会导致内存损坏甚至更糟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM