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

使用Conan和CMake链接Boost::Filesystem时遇LNK2019错误,求解决

解决Conan+CMake链接Boost::Filesystem的LNK2019错误

核心问题分析

  • 混用Conan生成配置与原生CMake find_package,导致库路径/版本不匹配
  • 静态库与动态库的编译宏定义冲突(BOOST_SYSTEM_DYN_LINK vs Boost_USE_STATIC_LIBS ON)
  • Conan配置的build_type=Release与CMake构建的Debug模式不匹配
  • 链接变量名错误(${BOOST_LIBRARIES}应为${Boost_LIBRARIES})

修复步骤

1. 统一依赖管理方式,移除原生Boost查找

修改CMakeLists.txt,直接使用Conan生成的依赖信息,无需手动调用find_package(Boost):

cmake_minimum_required(VERSION 3.2)
project(scanner CXX)

set(CMAKE_CXX_STANDARD 17)
set(CONAN_DISABLE_CHECK_COMPILER "1")
set(SOURCES src/main.cpp)

if(EXISTS ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
    include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
    conan_basic_setup()
else()
    message(FATAL_ERROR "请先运行conan install生成conanbuildinfo.cmake")
endif()

add_executable(${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})

2. 统一库类型与宏定义

  • 静态库方案:删除源代码第一行的#define BOOST_SYSTEM_DYN_LINK,确保编译时链接静态库
  • 动态库方案:在conanfile.txt的[options]中添加boost:shared=True,保留源代码中的BOOST_SYSTEM_DYN_LINK定义

3. 对齐构建类型

修改Conan配置文件(win_msvc_2019_x86_64),将build_type改为Debug,匹配CMake的Debug构建:

[settings]
os=Windows
os_build=Windows      
arch=x86_64
arch_build=x86_64     
compiler=Visual Studio
compiler.version=17   
build_type=Debug    
[options]
[conf]
[build_requires]      
[env]

4. 重新执行Conan安装与构建

删除现有build目录,重新运行Conan安装命令,再执行CMake构建:

conan install -pr:b win_msvc_2019_x86_64 -pr:h win_msvc_2019_x86_64 -if "${command:cmake.buildDirectory}" "${workspaceFolder}" --build missing

内容的提问来源于stack exchange,提问作者Dmitriy Bobrov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:54:56