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

如何用CMake生成可在无依赖Windows设备运行的C++独立可执行文件

生成可在无依赖Windows设备运行的OpenCV程序可执行文件

针对你的场景,有两种可行方案,分别适合不同需求:

方法一:静态编译(推荐,无需额外携带DLL)

静态编译会把所有依赖的库(包括OpenCV和C++标准库)直接打包进exe,目标机器不需要安装任何依赖就能运行。

步骤:

  1. 重新编译OpenCV为静态库

    • 下载OpenCV源码,用CMake配置时,把BUILD_SHARED_LIBS设为OFF,同时将CMAKE_BUILD_TYPE设为Release,指定MinGW作为编译器。
    • 编译完成后,会得到后缀为.a的静态版本OpenCV库。
  2. 修改CMakeLists.txt适配静态编译
    调整配置,让程序链接静态库,同时静态链接C++标准库:

    cmake_minimum_required(VERSION 3.5)
    
    project(CirclesDetectionProject VERSION 0.1)
    
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
    # 静态链接MinGW的C++标准库,避免依赖系统DLL
    set(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++")
    
    # 指向静态版本OpenCV的编译目录
    find_package(OpenCV REQUIRED PATHS "C:/opencv-static-build/x64/mingw64/")
    include_directories(${OpenCV_INCLUDE_DIRS})
    
    set(PROJECT_SOURCES
        main.cpp
    )
    
    add_executable(CirclesDetection ${PROJECT_SOURCES})
    # 链接静态OpenCV库
    target_link_libraries(CirclesDetection ${OpenCV_LIBS})
    
  3. 重新编译程序

    • 清空之前的构建目录,重新运行cmake .. -G "MinGW Makefiles",再执行mingw32-make,生成的exe就是独立可运行的。

方法二:动态库打包(快速实现,需携带DLL)

如果不想重新编译OpenCV静态库,可以直接打包程序所需的所有动态库:

步骤:

  1. 收集必要的DLL文件

    • 找到编译好的CirclesDetection.exe。
    • 打开MinGW终端,运行ldd CirclesDetection.exe,查看exe依赖的所有DLL路径。
    • 收集两类DLL:
      • OpenCV动态库:比如opencv_core4xx.dll、opencv_imgproc4xx.dll(xx为你的OpenCV版本号),在C:/opencv/build/x64/mingw64/bin目录下。
      • MinGW标准库:比如libstdc++-6.dll、libgcc_s_seh-1.dll、libwinpthread-1.dll,在MinGW安装目录的bin文件夹下。
  2. 打包分发

    • 将所有收集到的DLL和CirclesDetection.exe放在同一个文件夹,压缩后即可分发到其他Windows设备,直接运行exe即可。

注意事项:

  • 静态编译生成的exe体积会大很多,但无需额外文件;动态打包的exe体积小,但必须和DLL一起分发。
  • 务必用Release模式编译,Debug模式的exe依赖Debug版本库,无法在无开发环境的机器运行。
  • 系统自带的DLL(比如kernel32.dll)不需要打包,所有Windows设备都自带。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:42:47