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

运行CMake生成的.exe文件时出现入口点找不到错误

MinGW编译后运行提示文件系统入口点找不到

问题描述

使用cmake .. -G "MinGW Makefiles"编译、mingw32-make.exe构建均正常,但运行生成的anamorph_movie.exe时,Windows弹出错误:过程入口点_ZNKSt10filesystem7_cxx1118directory_iteratordeEv无法在该动态链接库中找到。

已尝试的无效操作

  • 修改编译/链接标志
  • 添加include_directories路径
  • 将exe移至C:\msys64\mingw64\bin目录
  • 调整系统Path变量顺序
  • 执行pacman -Suy更新系统

当前CMakeLists.txt代码

cmake_minimum_required(VERSION 3.1)
project(anamorph_movie)
SET(GCC_COVERAGE_COMPILE_FLAGS "-static-libgcc")
SET(GCC_COVERAGE_COMPILE_FLAGS "-static-libgcc++")

# Set the C++ standard to C++17
set(CMAKE_CXX_STANDARD 17)


# include the vcg library
include_directories(./lib/vcglib-main/)
# include the eigen library
include_directories(./lib/vcglib-main/eigenlib)
include_directories(C:/msys64/mingw64/bin)
include_directories(C:/msys64/mingw64/lib)

# Add your executable and source files here
add_executable(${PROJECT_NAME} anamorph_video_commandline.cpp)
target_link_libraries(${PROJECT_NAME} stdc++fs)

解决方案

核心原因

  1. 编译标志设置错误:两次SET赋值导致-static-libgcc被覆盖,未生效
  2. std::filesystem链接方式问题:MinGW新版本中std::filesystem已合并到libstdc++,无需单独链接stdc++fs;旧版本则需要静态链接避免动态库依赖
  3. 无效路径添加:mingw64/bin和mingw64/lib是库文件路径,不是头文件路径,添加到include_directories完全没用

修复步骤

  1. 修正编译标志:
    合并静态链接标志,确保两个参数都生效,推荐用更规范的CMake写法:

    target_compile_options(${PROJECT_NAME} PRIVATE -static-libgcc -static-libstdc++)
    
  2. 调整std::filesystem链接:

    • 若你的MinGW版本≥8.0,直接删除target_link_libraries(${PROJECT_NAME} stdc++fs)这一行
    • 若版本较旧,改为静态链接stdc++fs:
      target_link_libraries(${PROJECT_NAME} -static stdc++fs)
      
  3. 移除无效路径:
    删除include_directories(C:/msys64/mingw64/bin)和include_directories(C:/msys64/mingw64/lib)两行

修正后的完整CMakeLists.txt

cmake_minimum_required(VERSION 3.1)
project(anamorph_movie)

# 强制启用C++17标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 引入vcg和eigen头文件
include_directories(./lib/vcglib-main/)
include_directories(./lib/vcglib-main/eigenlib)

# 添加可执行文件
add_executable(${PROJECT_NAME} anamorph_video_commandline.cpp)

# 静态链接gcc和stdc++库,消除运行时依赖
target_compile_options(${PROJECT_NAME} PRIVATE -static-libgcc -static-libstdc++)

# 旧版MinGW兼容(不需要可删除)
# target_link_libraries(${PROJECT_NAME} -static stdc++fs)

验证操作

删除原build目录,重新执行编译构建:

mkdir build && cd build
cmake .. -G "MinGW Makefiles"
mingw32-make.exe

运行生成的anamorph_movie.exe即可解决入口点错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 06:47:27