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

Windows下C++嵌入Python导入paramiko出现_rust DLL加载失败错误

原因分析
  • Python 3.8+ Windows版本的DLL搜索机制变更:Python 3.8开始,扩展模块加载DLL时默认不再读取系统PATH环境变量的路径,仅信任Python核心安装目录、通过os.add_dll_directory显式添加的路径。直接在CMD启动Python解释器时,程序会自动把相关依赖路径加入搜索列表,但嵌入到C++程序时该初始化步骤不会自动执行,导致cryptography的Rust扩展依赖的运行时DLL找不到。
  • 架构不匹配:你使用的是32位Python 3.8,如果C++程序用VS编译为64位目标,就无法加载32位Python的扩展模块,即使路径正确也会报DLL加载失败。
  • 运行环境依赖缺失:部分版本的cryptography Rust扩展依赖VC可再发行组件,CMD环境有对应组件,但C程序的运行上下文没有加载对应组件。
解决方案
  1. 确认架构匹配:将C++程序的编译目标设置为32位(x86),和32位Python 3.8架构保持一致,VS编译时在解决方案平台栏选择x86即可。
  2. 显式添加DLL搜索路径:在导入paramiko之前先执行代码添加依赖路径,示例如下:
PyRun_SimpleString(R"(
import os
# 替换为你本地的Python DLLs目录路径
os.add_dll_directory(r"C:\Users\chaitanya.raut\AppData\Local\Programs\Python\Python38-32\DLLs")
)");
// 再执行导入操作
PyRun_SimpleString("import paramiko");
  1. 配置进程环境变量:在初始化Python之前,将Python相关路径添加到当前进程的PATH中,示例如下:
SetEnvironmentVariableA("PATH", "C:\\Users\\chaitanya.raut\\AppData\\Local\\Programs\\Python\\Python38-32;C:\\Users\\chaitanya.raut\\AppData\\Local\\Programs\\Python\\Python38-32\\DLLs;%PATH%");
Py_Initialize();
  1. 安装对应运行时:安装32位版本的VC++ 2015-2022可再发行包,补齐运行时依赖。
  2. 降级cryptography版本:如果上述方案都无效,可以安装无Rust依赖的旧版本cryptography:
pip install cryptography==3.4.8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:27:04