python 加载DLL动态链接库

本文介绍了如何使用VS2013创建C# DLL,然后通过Python的clr库来调用该DLL。内容包括C# DLL的编写、Python中clr库的安装与使用,以及解决调用时可能遇到的问题。
部署运行你感兴趣的模型镜像

软件+环境:VS2013、C#、pycharm、python3.8


一、利用VS2013 编写 dll

1、新建项目,请把名称写的容易识别一点 

 

2、代码如下,大致就包含两个函数,一个返回 一列字符串,一个返回 根据参数做加法

 C# 完整代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace dlltest
{
    public class Class1
    {
        public string _doc_()
        {
            return "dlltest 是一个C#的DLL动态链接库";
        }


        public int add (int a, int b)
        {

            return a + b;
        }

    }
}

3、点击 菜单栏->重新生成解决方案

 此时 输出栏 我们可以看到有个dll文件路径,所以你懂的,我们已经做出了个简单的dll文件

接下来的任务就是如何使用 python调用dll


二、python 调用 dll 

 python 调用dll 常见有两个库(ctypes[系统自带]、clr)。

ctypes一般在C++的dll中使用、C#我们使用clr。

安装:pip install pythonnet   或者  使用 pycharm库安装

import clr  # C#


# dll路径
path = r'd:\microsoft visual studio 2013\Projects\dlltest\dlltest\bin\Debug\dlltest.dll'
# 加载dll
# clr.FindAssembly(path) 由于作者使用python 3.8 该方法表示已经弃用,故采取下列方法
clr.AddReference(path)

# 导入 命名空间内 所有的 Class
from dlltest import *

# 实例化对象
TestClass = Class1()

# 使用dll中的方法
print(TestClass._doc_())

print("1+2={}".format(TestClass.add(1, 2)))

python控制台 output:

                        dlltest 是一个C#的 DLL动态链接库
                        3


三、报错

1、如果 调用的是C#生成的dll,请使用clr库

2、clr 模块不存在、或者AddReference方法不存在

请安装 pythonnet 

3、python 编译器发现代码部分 飘红,请不用在意,这是由于pycharm不知道这个dll里面到底有什么方法,不影响程序运行,我们在看有些程序自带库的时候偶尔也有这情况。

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值