Boost库构建-运行时链接和链接选项之间的差异

Boost libs building - difference between runtime-link and link options

本文关键字:链接 之间 选项 构建 运行时 Boost      更新时间:2023-10-16

我正在尝试用MSVC (VS 2010)在Windows 7中构建boost库。

我在bjam命令行选项中遇到了runtime-link和link选项。我想知道它们是如何使用的,它们之间的确切区别是什么。

我已经使用这个命令行构建了Boost Regex库

bjam——with-regex variant=release——build-options=complete

生成了以下文件:

1)boost_regex-vc100-mt-1_47.dll(导入库:boost_regex-vc100-mt-1_47.lib)

2) libboost_regex-vc100-mt-1_47.lib

3) libboost_regex-vc100-mt-s-1_47.lib

4) libboost_regex-vc100-s-1_47.lib

2和3 .lib文件的区别是什么?它们都是静态库。我已经通过了Boost文档,但没有找到太多的解释。

TIA

runtime-link指的是编译器运行时的链接方式。也就是说,它对应于VC的Multithreaded vs. Multithreaded DLL选项。运行时是指使用编译器提供的标准库所需的组件。

你可能在某些地方看到过动态链接文件:MSVCRTXX.DLL (C运行时)和MSVCPXX.DLL (c++标准库),MFCXX.DLL (MFC核心类)。静态对应的是LIBC和LICBP(参见这里的库表)

在构建Boost时使用的运行时链接选项应该与在客户端代码中使用的选项匹配。否则,在链接时或在运行程序时,您将获得由于不匹配的运行时而导致的错误。

当你构建你的程序使用动态链接运行时,你需要在部署你的应用程序时包括VC可分发版。

link指的是你的建筑将被链接到的boost库,无论是作为静态链接库还是动态链接库。