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

使用ctypes加载C++ DLL遇FileNotFoundError,是否需引入头文件?

问题分析与解决

首先明确:ctypes加载DLL完全不需要C++头文件,头文件是给C/C++编译阶段用的,Python调用DLL只需要DLL文件本身;后续如果要调用DLL里的函数,只需要手动指定函数的参数类型和返回类型就行,和头文件没关系。

接下来针对你加载B.dll的报错,给几个排查方向:

  • 直接用完整路径加载B.dll,避免路径解析问题:
    B = ctypes.cdll.LoadLibrary(r"C:\Users\{user}\PycharmProjects\pythonProject\B.dll")
    
  • 检查A.dll和B.dll的位数是否与Python匹配:如果你的Python是64位,两个DLL必须都是64位;如果是32位Python,DLL也得是32位,位数不匹配会触发依赖找不到的错误。
  • 检查B.dll是否有其他缺失的依赖:除了A.dll,B可能还依赖系统组件(比如VC++运行库),可以用dumpbin /dependents B.dll(需要VS工具链)或者Dependency Walker工具查看B.dll的所有依赖项,确认有没有缺失的文件。
  • 尝试把DLL目录加到系统PATH里:有时候add_dll_directory的优先级不如PATH,代码里可以临时添加:
    import os
    import ctypes
    
    dll_dir = r"C:\Users\{user}\PycharmProjects\pythonProject"
    os.environ['PATH'] = dll_dir + ';' + os.environ['PATH']
    A = ctypes.cdll.LoadLibrary("A.dll")
    B = ctypes.cdll.LoadLibrary("B.dll")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:39:58