我的项目使用boost-win-1.47-32bit-vs2010库。我目前正在调试模式下运行我的应用程序,它似乎运行良好。现在我打算在发布模式下构建它,我也成功地做到了。但是我担心的是我使用相同的boost库。我从来没有构建引导库,所以我不知道我使用的引导库是用于调试模式还是发布模式。有关如何找到的任何建议。我正在使用的引导库是否可能在发布和调试模式下运行,因为我在更改模式时没有出现任何错误?
更新
例如,相关文件夹中的每个文件似乎有两个版本
libboost_thread-vc100-mt-1_47.lib
libboost_thread-vc100-mt-gd-1_47.lib
这是否意味着它包含调试和发布库。因为除了VS2010中文件夹的路径之外,我没有在输入属性中明确指定任何内容。我认为可能有可能忽略了这个文件夹同时包含Release和debug版本的事实,当我更改构建选项以使用boost调试库调试它时,当我使用release版本构建时,它构建使用发布库。
答案 0 :(得分:6)
我使用的启动库是否可能在发布和调试模式下运行
不,不是真的。您将拥有调试和发布版本。你不应该混合那些。
libboost_thread-vc100-mt-1_47.lib将是您的库的发布版本。应用程序的发布版本应链接到该版本。对于调试版本,您可以链接libboost_thread-vc100-mt-gd-1_47.lib。
您的编译器可能不会直接抱怨任何事情,但在运行时可能会出现几个与C ++运行时相关的问题。例如,请参阅此帖子:Mixing debug and release library/binary - bad practice?
答案 1 :(得分:5)
Boost默认情况下通常会构建调试和发布库,并将它们安装在库安装目录中。 (通常在Windows上为c:\Boost\lib
或在unix / linux上为/usr/local
等)。但是,可以更改此行为,因此您应该检查。
如果查看库,您应该看到每个库的两个版本,例如:
libboost_unit_test_framework-vc110-mt-1_53.lib
libboost_unit_test_framework-vc110-mt-gd-1_53.lib
上面的第一个是库的发行版本,而秒中的-gd
表示调试版本,请参阅this page了解所使用的命名约定。
现在,您必须确保链接到库的正确版本。如果您使用的是Visual Studio,那么它将为您选择正确的库。对于其他工具集,您必须为每个构建配置明确选择要链接的正确库。
注意:Visual Studio包含pragma option以指定目标文件应链接的库。 Boost通过auto_link.hpp头文件使用此选项,如果您使用具有要链接的库的boost库,将包含该文件。