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

链接mongocxx/bsoncxx后程序启动失败(错误码-1073741515)求助

解决链接mongocxx/bsoncxx后程序无法启动(错误码0xC0000135)的问题

这个错误码0xC0000135是Windows系统的典型提示:程序找不到运行所需的动态链接库(DLL)。你链接的是SHARED类型的动态库,虽然编译时通过了.lib导入库的链接,但运行时必须要有对应的.dll文件能被程序找到,否则就会出现这个启动失败的问题。结合你的CMake配置,我给你几个具体的修复方案:

1. 完善CMake中导入库的配置

你当前只设置了IMPORTED_IMPLIB(也就是编译时用的导入库),但没有指定动态库文件的路径。对于SHARED类型的导入库,需要补充IMPORTED_LOCATION属性,让CMake明确知道对应的DLL位置。修改后的CMake配置示例如下:

cmake_minimum_required(VERSION 3.15)
project(enabler_app)
set(CMAKE_CXX_STANDARD 17)

# 定义驱动根目录,方便后续引用
set(MONGO_DRIVER_ROOT ${CMAKE_CURRENT_LIST_DIR}/mongo_db_driver)

# 配置mongocxx动态库
add_library(MONGOCXX SHARED IMPORTED)
set_target_properties(MONGOCXX PROPERTIES
    IMPORTED_IMPLIB ${MONGO_DRIVER_ROOT}/lib/mongocxx.lib
    # 这里替换成你实际的mongocxx.dll路径
    IMPORTED_LOCATION ${MONGO_DRIVER_ROOT}/bin/mongocxx.dll
    # 如果是Debug模式,确保用的是Debug版本的库和DLL
    # IMPORTED_IMPLIB_DEBUG ${MONGO_DRIVER_ROOT}/lib/mongocxxd.lib
    # IMPORTED_LOCATION_DEBUG ${MONGO_DRIVER_ROOT}/bin/mongocxxd.dll
)

# 配置bsoncxx动态库
add_library(BSONCXX SHARED IMPORTED)
set_target_properties(BSONCXX PROPERTIES
    IMPORTED_IMPLIB ${MONGO_DRIVER_ROOT}/lib/bsoncxx.lib
    # 替换成实际的bsoncxx.dll路径
    IMPORTED_LOCATION ${MONGO_DRIVER_ROOT}/bin/bsoncxx.dll
    # Debug模式对应配置
    # IMPORTED_IMPLIB_DEBUG ${MONGO_DRIVER_ROOT}/lib/bsoncxxd.lib
    # IMPORTED_LOCATION_DEBUG ${MONGO_DRIVER_ROOT}/bin/bsoncxxd.dll
)

# 添加头文件目录
include_directories(
    ${MONGO_DRIVER_ROOT}/include/mongocxx/v_noabi
    ${MONGO_DRIVER_ROOT}/include/bsoncxx/v_noabi
)

# 添加可执行文件并链接库
add_executable(enabler_app main.cpp)
target_link_libraries(enabler_app MONGOCXX BSONCXX)

2. 确保运行时能找到所有依赖DLL

除了mongocxx.dll和bsoncxx.dll,它们还依赖MongoDB C驱动的核心DLL(比如mongoc-1.0.dll、bson-1.0.dll),这些文件通常也在你的驱动编译输出目录里。你有两种方式让程序找到它们:

  • 临时方案:把所有相关DLL所在的目录添加到系统PATH环境变量中,然后重启CLion让环境变量生效。
  • 持久化方案:在CMake中添加自定义命令,自动把DLL复制到可执行文件的输出目录,这样每次构建后程序都能直接找到依赖:
# 在target_link_libraries之后添加
add_custom_command(TARGET enabler_app POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
        ${MONGO_DRIVER_ROOT}/bin/mongocxx.dll
        ${MONGO_DRIVER_ROOT}/bin/bsoncxx.dll
        ${MONGO_DRIVER_ROOT}/bin/mongoc-1.0.dll
        ${MONGO_DRIVER_ROOT}/bin/bson-1.0.dll
        $<TARGET_FILE_DIR:enabler_app>
)

3. 检查编译模式一致性

一定要注意:你的项目编译模式(Debug/Release)必须和你编译mongocxx/bsoncxx时的模式完全一致。如果你编译驱动时用的是Debug模式,那项目也得用Debug模式构建;反之亦然。混合模式会导致各种奇怪的运行错误,包括这个启动失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:27:31