【问题标题】:How to build OpenImageIO 1.4.12 with VS2015如何使用 VS2015 构建 OpenImageIO 1.4.12
【发布时间】:2016-11-13 14:00:44
【问题描述】:

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

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 库吗?这些参考从哪里来?我怎样才能摆脱它们,因为显然它们在我的配置中无处可寻?

【问题讨论】:

  • 这是因为您构建的 boost 版本早于 VS2015。她应该有帮助的答案:visual studio asks for wrong boost libraries
  • 这确实是我的问题的原因和解决方案。我没有意识到我的问题的根源可能在于 boost 本身,而不是我正在构建的库。

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


【解决方案1】:

这个问题是boost本身的问题,不是OpenImageIO的问题,是因为使用的boost版本是在VS2015之前发布的。

正如 kenba 在他的评论中指出的那样,这个答案指向了解决方案: 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"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多