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