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

如何使用Python调用.dll文件?使用pythonnet调用时报错如何解决?

pythonnet调用C#动态链接库报错解决方案

问题背景

  • 运行环境:Python 3.8.6,使用pythonnet包调用自定义My.dll文件
  • 项目文件结构:文件结构
  • 报错信息:报错信息
  • 原始报错代码:
import clr
clr.AddReference("My")
from My import *

排查与解决步骤

  1. 校验架构与版本匹配
    • 确认Python位数(32位/64位)与My.dll编译架构一致,架构不兼容会直接加载失败
    • 安装适配Python3.8的pythonnet版本,执行命令:pip install pythonnet==3.0.1
  2. 显式指定dll加载路径
    直接填写dll文件名容易出现路径查找失败问题,修改代码先将dll所在目录加入搜索路径:
import clr
import os
# 获取当前脚本所在目录,也就是dll存放目录
dll_dir = os.path.dirname(os.path.abspath(__file__))
# 加载dll时传入完整路径
clr.AddReference(os.path.join(dll_dir, "My.dll"))
from My import *
  1. 适配不同.NET编译版本
    • 如果My.dll是基于.NET Framework编译的,上述代码即可正常运行
    • 如果My.dll是基于.NET Core/.NET 5+版本编译的,需要提前指定coreclr运行时,修改代码如下:
from pythonnet import load
load("coreclr")
import clr
import os
dll_dir = os.path.dirname(os.path.abspath(__file__))
clr.AddReference(os.path.join(dll_dir, "My.dll"))
from My import *
  1. 校验dll本身配置
    确认dll编译时命名空间确实为My,需要导入的类、方法都使用了public修饰符,非公开成员pythonnet无法访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:36:04