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

Windows10不使用VS编译pybind11模块导入报DLL load failed错误如何解决

报错含义说明

这个错误不是指你生成的fun.cp39-win_amd64.pyd文件不存在,而是Windows加载该pyd模块时,找不到它依赖的其他动态链接库文件。你使用Unix Makefiles生成器在Windows下编译,大概率是用MinGW工具链,pyd默认会依赖MinGW的运行时动态库,而这些库默认不在Windows的系统搜索路径中,就会触发该报错。

解决方法
  • 优先给编译加静态链接参数,修改你的CMakeLists.txt,补充静态编译配置:
cmake_minimum_required(VERSION 3.9)
project(pb11Ex)
# 新增静态链接配置,把运行库打包进pyd
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static -static-libgcc -static-libstdc++")
add_subdirectory(pybind11)
# 注意确认这里的源文件名是否正确,你写的ex_moc.pp是否是实际的源文件名,常规C++源文件后缀为.cpp
pybind11_add_module(fun, ex_moc.pp)
  • 更换更适配Windows MinGW环境的CMake生成器,进入build目录后清空原有缓存,执行:
    cmake .. -G "MinGW Makefiles"
    之后使用mingw32-make命令代替make编译,避免工具链不匹配问题。
  • 确认你运行的Python版本和架构匹配:生成的pyd是cp39-win_amd64,对应必须使用64位的Python 3.9版本,版本或架构不匹配也会触发该报错。
  • 确认pyd文件在Python的搜索路径中:你可以在启动Python的同级目录放置pyd文件,或者在import前执行:
    import sys; sys.path.append("你的build文件夹绝对路径")
  • 如果上述方法都无效,可以用Dependencies工具查看pyd的依赖项,把标红缺失的DLL(通常是MinGW目录下的libgcc_s_seh-1.dll、libstdc++-6.dll、libwinpthread-1.dll等)复制到pyd同级目录即可。

内容的提问来源于stack exchange,提问作者Nel Carlo Bayang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:36:00