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

CMake编译报错LNK1104:无法打开libboost_charconv-vc143-mt-gd-x64-1_87.lib的解决求助

CMake编译报错LNK1104:无法打开libboost_charconv-vc143-mt-gd-x64-1_87.lib的解决求助

大家好,我最近在基于CMake的C++项目中尝试引入boost/mysql.hpp时遇到了链接错误,具体报错信息如下:

fatal error LNK1104: 无法打开文件"libboost_charconv-vc143-mt-gd-x64-1_87.lib"

我已经确认这个缺失的库文件确实存在于Boost安装目录的C:/boost_1_87_0/lib64-msvc-14.3/文件夹下,而且当我注释掉#include <boost/mysql.hpp>后,项目能正常编译链接,说明基础的Boost和OpenSSL配置是没问题的。下面是我的项目相关配置和代码,希望能得到大家的帮助!

项目配置文件(CMakeLists.txt)

cmake_minimum_required(VERSION 3.8)
project(MyProject)

set(BOOST_ROOT "C:/boost_1_87_0")
set(OPENSSL_ROOT_DIR "C:/Program Files/OpenSSL-Win64")

list(APPEND CMAKE_PREFIX_PATH "${BOOST_ROOT}")
list(APPEND CMAKE_PREFIX_PATH "${OPENSSL_ROOT_DIR}")

if (WIN32)
    set(OpenSSL_USE_STATIC_LIBS TRUE)
    set(OPENSSL_MSVC_STATIC_RT TRUE)
endif()

find_package(Boost 1.87.0 REQUIRED COMPONENTS filesystem system)
if (Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
endif()

find_package(OpenSSL REQUIRED)
if (OpenSSL_FOUND)
    include_directories(${OpenSSL_INCLUDE_DIR})
endif()

add_executable(${PROJECT_NAME} InventoryMonitorServ.cpp InventoryMonitorServ.h )

target_link_libraries(${PROJECT_NAME} PRIVATE 
    ${Boost_LIBRARIES} 
    OpenSSL::SSL 
    OpenSSL::Crypto 
)

测试代码片段

#include "InventoryMonitorServ.h"
#include <boost/asio.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/mysql.hpp>
#include <openssl/sha.h>

int main() {
    std::cout << "Inventory Monitor Service is starting..." << std::endl;
    return 0;
}

CMake配置过程的环境参数(部分)

Параметры среды:
1> CommandPromptType=Native
1> DevEnvDir=C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\
1> ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
1> EXTERNAL_INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\cppwinrt
1> Framework40Version=v4.0
1> FrameworkDir=C:\Windows\Microsoft.NET\Framework64\
1> FrameworkDir64=C:\Windows\Microsoft.NET\Framework64\
1> FrameworkVersion=v4.0.30319
1> FrameworkVersion64=v4.0.30319
1> INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\cppwinrt
1> LIB=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\lib\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.26100.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\\lib\10.0.26100.0\\um\x64
1> LIBPATH=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.26100.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.26100.0;C:\Windows\Microsoft.NET\Framework64\v4.0.30319
1> Path=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\VCPackages;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\bin\Roslyn;C:\Program Files\Microsoft Visual Studio\2022\Community\Team Tools\DiagnosticsHub\Collector;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\\x64;C:\Program Files (x86)\Windows Kits\10\bin\\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\\MSBuild\Current\Bin\amd64;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files

我的疑问和求助点

  1. 是不是因为boost/mysql.hpp依赖charconv组件,但我在find_package(Boost)时没有显式声明这个组件,导致CMake没有自动链接对应的库?
  2. 会不会是静态库/动态库的配置不匹配?我设置了OpenSSL使用静态库,但Boost的库类型是否需要对应调整?
  3. 我的Visual Studio 2022使用的是工具集14.44,而Boost的库是vc143版本,这会不会有兼容性问题?

希望有经验的朋友能帮我分析下问题所在,或者给出可行的解决办法,谢谢大家!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 07:53:05