CLion使用Visual Studio编译SQLAPI++项目出现链接错误如何解决?
错误原因
- 核心报错的三个
LNK2019缺失符号都属于Windows系统提供的版本信息查询API,这些接口实现在系统库version.lib中,SQLAPI++的静态库依赖该系统库,但你当前的CMake配置中没有添加该依赖,因此触发链接错误。 - 额外配置问题:你当前同时链接了
sqlapis.lib(SQLAPI的Release版静态库)和sqlapisd.lib(SQLAPI的Debug版静态库),不同编译配置的库混链也会导致后续链接冲突,需要按编译配置选择对应版本的库。
修复方案
按以下步骤修改你的CMakeLists.txt即可:
- 移除原有同时链接两个版本SQLAPI++库的配置,改用CMake生成器表达式区分Debug/Release配置,自动匹配对应版本的库
- 添加缺失的系统依赖库
version.lib - 修正原
include_directories多余的Project参数(该参数无实际作用且可能导致路径识别异常)
修改后的完整CMakeLists.txt示例如下:
cmake_minimum_required(VERSION 3.19) project(Project) set(CMAKE_CXX_STANDARD 20) set(Boost_USE_STATIC_LIBS OFF) set(LIBS "C:/Users/Maximilian/Documents/C C++/librarys") include_directories(${LIBS}/SQLAPI/include/) add_executable(Project main.cpp src/Project.cpp src/Project.h) target_link_libraries(Project # 按编译配置匹配对应SQLAPI库 $<$<CONFIG:Release>:${LIBS}/SQLAPI/vs2019/lib/sqlapis.lib> $<$<CONFIG:Debug>:${LIBS}/SQLAPI/vs2019/lib/sqlapisd.lib> # 补充缺失的系统版本依赖库 version.lib )
额外注意:需要确认CLion中选择的VS编译器架构(x86/x64)和你使用的SQLAPI++库的架构完全匹配,否则仍可能出现架构不兼容的链接错误。
内容的提问来源于stack exchange,提问作者Maximilian Bastian
相关产品推荐
相关产品推荐

