如何使用VS2015

时间:2016-11-13 14:00:45

标签: visual-c++ boost visual-studio-2015

我正在尝试使用VS2015为目前基于VS2013的项目构建依赖项 他们中的大多数都没有问题,无论是现状还是补丁,但我对OpenImageIO 1.4.12完全不知所措。
我将参数传递给cmake和msbuild,它们为所有内容设置了VS2015的使用,实际上生成的解决方案文件将“vc140_xp”指示为所选的工具集。
但是在链接时我收到类似这样的错误,表明某处有一个引用VS2013构建的库:

LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc120-mt-1_56.lib' [F:\...\deps\x64\oiio-Release-1.4.12\build\src\libOpenImageIO\OpenImageIO.vcxproj]

当然我在另一个地方有一堆 libboost_xxx-vc140-mt-1_56.lib ,因为我也用VS2015构建了它们。解决方案文件中设置的依赖项也正确引用 libboost_xxx-vc140-mt-1_56.lib 文件和正确的路径,并且在所有OpenImageIO构建树中执行FINDSTR我无法找到任何对旧版VS版本的引用 但是同一个命令列出了很多包含这些引用的 .obj 文件,例如(为了更好的可读性而放在多行上):

 build\src\libOpenImageIO\OpenImageIO.dir\Release\xmp.obj:/FAILIFMISMATCH:"_CRT_STDIO_ISO_WIDE_SPECIFIERS=0"
 libboost_regex-vc120-mt-1_56.lib
 libboost_thread-vc120-mt-1_56.lib
 libboost_date_time-vc120-mt-1_56.lib
 libboost_system-vc120-mt-1_56.lib
 libboost_chrono-vc120-mt-1_56.lib

是否因为这些引用链接无法寻找不同版本的boost库?这些参考文献来自哪里?我怎么能摆脱它们,因为显然它们在我的配置中找不到它?

1 个答案:

答案 0 :(得分:1)

这个问题本身就在boost中,而不是在OpenImageIO中,并且是由在VS2015之前发布的使用版本的boost引起的。

正如肯巴在评论中所指出的,这个答案指向了解决方案: Visual Studio 2013 (vs120) asks for wrong boost libraries
可以在此处找到与旧版boost和VS相关的完整说明: How do I specify, which version of boost library to link to?

对于VS2015,以下是 boost / config / auto_link.hpp 中相应代码行的显示方式:

#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800)

     // vc11:
#    define BOOST_LIB_TOOLSET "vc110"

#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1900)

     // vc12:
#    define BOOST_LIB_TOOLSET "vc120"

#  elif defined(BOOST_MSVC)

     // vc14:
#    define BOOST_LIB_TOOLSET "vc140"

实施这些线条解决了我的问题。