You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

依赖OpenImageIO的库与应用在Ubuntu下链接失败问题

OpenImageIO + vcpkg 跨平台链接异常问题

问题背景

我有一个依赖vcpkg管理多第三方库的项目,引入OpenImageIO后出现平台差异问题:

  • Windows 10(MSVC 17.6):库本身编译链接正常,依赖该库的应用也能成功完成链接
  • Ubuntu 20.04.6(g++ 10.5.0,ld 2.34):库编译链接无报错,但所有依赖该库的应用在链接阶段都会抛出大量Boost库未定义引用错误,静态构建时的典型错误如下:
/usr/bin/ld: ../../vcpkg_installed/x64-linux/debug/lib/libOpenImageIO_d.a(imageinput.cpp.o): in function `boost::thread_specific_ptr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~thread_specific_ptr()':
/mnt/c/Users/cgnam/source/repos/vira/out/ubuntu/vcpkg_installed/x64-linux/include/boost/thread/tss.hpp:61: undefined reference to `boost::detail::set_tss_data(void const*, void (*)(void (*)(void*), void*), void (*)(void*), void*, bool)'

已准备最小复现案例

已提供可复现问题的最小项目,需通过vcpkg构建,项目结构及CMake配置均包含其中。

已尝试的无效解决方案

  • 更换vcpkg仓库中不同版本的OpenImageIO(2.5.12、2.5.8)
  • 切换库的静态/动态构建方式
  • 将OpenImageIO的CMake链接属性从PRIVATE改为PUBLIC
  • 在应用侧直接显式链接OpenImageIO

以上操作均未能解决Ubuntu下的链接失败问题,但Windows环境始终正常工作。

补充验证结果

通过sudo apt install libopenimageio-dev安装系统提供的OpenImageIO开发库,修改CMake配置后,Ubuntu下的应用可以正常链接并运行。

疑问

出现此问题是vcpkg的OpenImageIO端口存在缺陷,还是我在CMake依赖管理或vcpkg使用逻辑上存在理解误区?


内容的提问来源于stack exchange,提问作者Chris Gnam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:11:08