python中C#类库调用+调试方法~~~

实用技能之Python调用C++或者C#开发的DLL动态库 Python作为一门高级编程语言,可以快速地实现各种复杂的业务逻辑和算法。但对于一些计算密集型任务,Python的执行效率可能不尽如人意。此时,我们可以考虑使用C/C++等底层语言来编写性能更高的代码,并通过动态链接库(DLL)的方式,在Python中调用这些代码。在实际开发中,Python调用DLL的场景非常广泛。例如,使用第三方库、访问硬件接口、提高性能、调用系统函数和与其他语言交互等。通过DLL,Python可以方便地调用各种底层接口,从而使得Python可以胜任更多的任务。 阅读详情

因为开发需要,我们经常会用C#来写一些库供python调用,但是在使用过程中难免会碰到一些问题,需要我们抽丝剥茧来解决~~~

首先,我们在python中要想调用C#(基于.net)的dll,需要安装一个库,它就是

pythonnet

这个安装过程就省略了.... 

然后,在python项目的开头,需要作如下引用:

import clr

那我们就以调用hpy-Library.dll为例,我们先看看是否能载入成功~~

sys.path.append(os.getcwd() + r"\windll")    # hpy-Library.dll 文件所在位置
dll_load = clr.AddReference('hpy-Library')

print(dll_load)
print(clr._available_namespaces)
print("hpy_Library in namespaces:", "hpy_Library" in clr._available_namespaces)

如果不出意外的话,将会输出以下内容:

hpy-Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
{'System.IO.Ports', 'Python.Runtime', 'System.Collections.Generic', 'System.CodeDom.Compiler', 'System.Diagnostics.Contracts.Internal', 'System.Xml.Serialization', 'System.Net.WebSockets', 'System.Runtime.InteropServices', 'System.Management', 'System.Runtime.InteropServices.ComTypes', 'System.Net.NetworkInformation', 'System.Configuration.Assemblies', 'System.Security.Policy', 'System.Net.Configuration', 'System.Security.Authentication.ExtendedProtection', 'System.Runtime.ExceptionServices', 'System.Xml.Serialization.Advanced', 'System.Text', 'System.Security.Cryptography', 'System.Xml.Serialization.Configuration', 'System.IO.Compression', 'System.Security.Authentication.ExtendedProtection.Configuration', 'System.Runtime.Versioning', 'System.Runtime.Serialization.Formatters.Binary', 'System.Runtime.Remoting.Channels', 'System.Security', 'System.Runtime.Remoting.Services', 'System.Timers', 'System.Security.AccessControl', 'System.Xml', 'System.ComponentModel.Design.Serialization', 'System.IO', 'System.Net.Mail', 'System.Globalization', 'ClrLoader', 'System.Configuration.Internal', 'System.Collections.Specialized', 'Python', 'Microsoft', 'System.Web', 'System.IO.IsolatedStorage', 'System.IO.MemoryMappedFiles', 'System.Security.Principal', 'Microsoft.Win32', 'System.Windows.Input', 'System.Diagnostics.Eventing', 'System.Net', 'System.Runtime.Remoting', 'System.Linq', 'System.Runtime.Remoting.Metadata.W3cXsd2001', 'System.Security.Permissions', 'System.Runtime.Remoting.Activation', 'System.Diagnostics.Eventing.Reader', 'System.Threading.Tasks', 'System.Net.Cache', 'System.Runtime.Serialization', 'System.Runtime.Remoting.Lifetime', 'hpy_Library', 'System.Runtime.InteropServices.WindowsRuntime', 'System.Runtime.ConstrainedExecution', 'System.Net.Security', 'System', 'System.Linq.Expressions', 'System.Runtime.Remoting.Proxies', 'Microsoft.CSharp', 'System.Security.Cryptography.X509Certificates', 'System.Collections.Concurrent', 'System.CodeDom', 'System.Diagnostics', 'Microsoft.Win32.SafeHandles', 'System.Diagnostics.SymbolStore', 'System.Net.Sockets', 'System.Collections', 'System.Diagnostics.Contracts', 'System.Security.Claims', 'System.ComponentModel.Design', 'System.Security.Authentication', 'System.Xml.XmlConfiguration', 'System.Configuration.Provider', 'System.Windows', 'System.Xml.Schema', 'System.Reflection', 'System.Runtime.DesignerServices', 'System.Deployment', 'System.Threading', 'System.Dynamic', 'System.Runtime.Remoting.Metadata', 'System.IO.Pipes', 'System.Collections.ObjectModel', 'System.Diagnostics.Tracing', 'System.Xml.Xsl', 'System.Windows.Markup', 'System.Runtime.CompilerServices', 'System.Runtime.Remoting.Contexts', 'Python.Runtime.Codecs', 'System.Xml.XPath', 'System.Media', 'Microsoft.VisualBasic', 'System.Management.Instrumentation', 'System.Xml.Resolvers', 'System.Runtime.Remoting.Messaging', 'System.Runtime.Hosting', 'System.ComponentModel', 'System.Text.RegularExpressions', 'System.Runtime.Serialization.Formatters', 'System.Runtime.InteropServices.Expando', 'System.Deployment.Internal', 'System.Runtime', 'System.Net.Mime', 'System.Diagnostics.PerformanceData', 'System.Reflection.Emit', 'System.Resources', 'System.Configuration', 'System.Diagnostics.CodeAnalysis'}
hpy_Library in namespaces: True

第一行表示hpy-Library的版本等相关信息

第二行为clr当前激活的名字空间,这里会包含很多.net库的名字空间

第三行即检查hpy_Library是否在available的namespaces中,结果为真即表示dll载入成功,可用。那么下面你就可以开始使用你的C#外部dll库了~~ ex:

sys.path.append(os.getcwd() + r"\windll")    # hpy-Library.dll 文件所在位置
dll_load = clr.AddReference('hpy-Library')

#print(dll_load)
#print(clr._available_namespaces)
#print("hpy_Library in namespaces:", "hpy_Library" in clr._available_namespaces)

from hpy_Library import *
aud_sts = AudioStatus()

# go on your code 
...

Python中动态调用C#的dll动态链接库中方法 【不同语言程序之间调用】Python中动态调用C#的dll动态链接库中方法 阅读详情

相关推荐

c#中调用python脚本

1.安装InronPython:http://ironpython.net/ 2.添加引用库 在Visual Studio新建一个工程后,添加引用IronPython.dll和Microsoft.Scripting.dll(位于InronPython的安装目录下,如下图) 在C#中加入引用 在python中写脚本(写完脚本一定要在python下执行看有无语法,对齐等问题) 在c#中加入代码 ...

qq_42920868的博客 1346

Python调用c#DLL

2.Python调用c#DLL使用的是pythonnet的clr包,注意python也有独立的clr包,如果使用错了会导致加载DLL出错。如果python也有独立的clr包已经安装,就先卸载。然后检查pythonnet包的安装情况。3.注意import clr代码需要set_runtime之后导入,否则加密后的信息虽然不会报错,但加密后的内容是错误的。1.注意区分:c++封装的使用ctypes,c#封装的使用pythonnet。

weixin_41146102的博客 2338

C#与Python互操作:实现两种语言的交互

我们展示了两个示例:从Python中调用C#的函数和从C#中调用Python的函数。请注意,在实际应用中,需要根据具体的需求和情况来选择最适合的互操作方案,并注意处理异常和错误情况。除了调用C#的函数,我们还可以在C#代码中调用Python的函数。为了实现这一点,我们需要使用Python的。接下来,我们需要在Python脚本中引入C#的类库并调用其中的函数。通过以上代码,我们成功地在C#中调用了Python的函数,并获取了返回结果。接下来,让我们来看一个简单的例子:从Python脚本中调用C#的函数。

qq_39605374的博客 1120

python 调用 C# dll 库读取电脑硬件信息

python程序读取电脑硬件信息,包括。,通过该dll提供的接口读取硬件信息。

YumOS的博客 2659

自组织映射神经网络(SOM)

目录 1 背景:自组织(竞争型)神经网络 2竞争学习的概念与原理 2.1 竞争学习的步骤 2.2 示例 3SOM典型结构 4SOM网的权值调整域 5 SOM Kohonen 学习算法 6 SOM示例 7SOM设计细节 7.1输出层设计 7.2输出层节点排列的设计 7.3 权值初始化问题 7.4学习率的设计 7.5设计拓扑领域 8SOM功能分析 8.1 保序映射 8.2数据压缩 8.3 特征提取 9自组织映射神经网络与K均值算法的区别...

weixin_39910711的博客 1万+

【驱动适配】高通sa522平台tac5x1x驱动适配全指南

本手册详细介绍了TAC5301-Q1音频编解码器在高通sa525平台Linux系统下的驱动适配流程。主要内容包括:1)TAC5301-Q1核心特性(车载级音频Codec、关键接口和功能);2)驱动适配依赖(高通声卡驱动、ALSA SoC框架等);3)I2S协议原理及主从模式说明;4)硬件准备与检查要点;5)完整的驱动移植步骤(代码移植、Kconfig/Makefile修改、设备树配置)。该手册适用于嵌入式音频开发工程师快速完成TAC5301-Q1芯片的驱动移植与验证工作。

嵌入式博哥的博客 303

C# 调用 Python(直接调用py代码方式)

可以有几种方式, 本文示例为直接调用代码方式。 VS2017新建一个WPF工程,加一个button: MainWindow.xaml.cs 代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using Sy...

coco的专栏 1万+

Claude Code Router 401错误修复

claude code router配置相关环境变量问题

如沐春风 6357

关于python调用c#动态库文件的问题记录

引:之前有写过一篇关于python调用c++动态库的问题记录,可以参考。本文将主要介绍python调用C#动态库中遇见的一些问题。

qq_41684737的博客 806

MPU6050 vs BMX055 vs ICM20602:如何为你的项目选择最佳陀螺仪(附实测数据对比)

本文深度对比了MPU6050、BMX055和ICM20602三款主流六轴IMU传感器的核心性能。通过实测数据,分析了它们在精度、噪声、温漂、接口速度及资源占用上的差异,并提供了从项目需求出发的选型指南,帮助开发者根据预算、精度要求和处理器性能选择最合适的陀螺仪与加速度计组合。

h0i1j2k3l的博客 969

手把手教你使用transciver-ip核的配置

手把手教你使用transciver-ip核的配置

u012938458的博客 5411

C# .Net通过pythonnet调用python pyd文件

C#通过pythonnet调用pyd文件

实践出真知 7437

Hodgkin-Huxley Model

介绍了经典的动力学模型:HH Model

weixin_73557167的博客 2473

c#调用python模块_c#项目调用python算法程序的实现方法

之前了解过另外一种方法,把python程序打包成exe执行文件,太慢了,因为经过打包之后,c#在调用的时候,需要及其复杂的解包的过程。所以这里介绍一种方法,直接在c#里面调用python后台的方法。首先我们一般调用python代码的时候要选择一个python解析器的路径,这里我么使用的是anaconda里面的python,因为里面带有很多第三方的包,不用我们再去找了,方便。下载完anaconda之...

weixin_39566914的博客 1040

UVM(5)-TLM通信

TLM是一种基于事务 (transaction) 的通信方式,通常在高抽象级语言例如SystemC或者SV/UVM中作为模块之间的通讯方式。

2301_76431006的博客 2105

基于PyTorch+Transformer实现谣言检测系统

本项目使用基于`PyTorch+Transformer`的谣言检测模型,将文本中的谣言事件进行连续向量化,通过一维卷积神经网络的学习训练来挖掘表示文本深层的特征,避免了特征构建的问题,并能发现那些不容易被人发现的特征,从而产生更好的效果。

优快云 精品推荐 6349

c#调用python脚本 四种方法_C#调用python脚本的方法步骤(2种)

因项目需要,需要使用C#控制台程序执行python脚本,查询各种资料后可以成功调用了,记录一下,以备后面遗忘。只尝试了两种调用方式,第一种只适用于python脚本中不包含第三方模块的情况,第二种针对的是python脚本中包含第三方模块的情况。不管哪种方式,首先都需要安装IronPython。我是通过vs2017的工具->NuGet包管理器->管理解决方案的NuGet包,搜索IronPy...

weixin_32023091的博客 655

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c#调用python函数_C#调用python脚本的方法步骤(2种)

因项目需要,需要使用C#控制台程序执行python脚本,查询各种资料后可以成功调用了,记录一下,以备后面遗忘。只尝试了两种调用方式,第一种只适用于python脚本中不包含第三方模块的情况,第二种针对的是python脚本中包含第三方模块的情况。不管哪种方式,首先都需要安装IronPython。我是通过vs2017的工具->NuGet包管理器->管理解决方案的NuGet包,搜索IronPy...

weixin_39714528的博客 696

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C#调用Python封装的类

由于要计算机械臂动力学的各个矩阵,老是自己手搓又不太行,就试着用Pinocchio库来算。但是Pinocchio的C++版本在Win环境下部署非常麻烦,而且后续机械臂在工控机的win系统下实际运行还是用的C#,就想着用Python版本的Pinocchio然后自己封装一下给C#调用。

weixin_44562318的博客 859

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python调用c# dll pythonnet使用

最近需要使用python去调用C#封装的dll如果是c++写的dll 我们可以使用ctypesc#可以是pythonnetpython还有专门的ironpython调用c#我使用了pythonnet下载安装完成以后import clrimport syssys.path.append("D:\\test")//将dll路径加入工作路径clr.FindAssembly(DllName+'.dll')...

wb453178064的博客 1万+

c# emnu 获取注释_c#项目调用python算法程序的实现方法

之前了解过另外一种方法,把python程序打包成exe执行文件,太慢了,因为经过打包之后,c#在调用的时候,需要及其复杂的解包的过程。所以这里介绍一种方法,直接在c#里面调用python后台的方法。首先我们一般调用python代码的时候要选择一个python解析器的路径,这里我么使用的是anaconda里面的python,因为里面带有很多第三方的包,不用我们再去找了,方便。下载完anaconda之...

weixin_39824020的博客 116

c#调用python代码

https://blog.csdn.net/qq_42063091/article/details/82418630 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks;...

weixin_42388228的博客 819

记一次C#调用python的爬坑经历

C#调用Python文件

findwind1的博客 1598

在C#中调用Python:实现跨语言编程的桥梁

在软件开发中,跨语言编程是一个常见的需求。C#和Python是两种非常流行的编程语言,分别以其高效和易用性受到开发者的喜爱。本文将介绍如何在C#中调用Python代码,实现两种语言的无缝集成。

寒冰屋的专栏 7116

C# 通过 C++ 链库调用Python代码 (一)

前言 最近遇到一个需求,FreeCad的模型特征识别,底层的识别代码是某大神用Python写的,关于FreeCad Api的调用看的也不是特别明白,我们上位机是WPF写的,这里他是用C++封装了一个动态链库,对C#暴露一些函数,使得上位机可以调用Python的代码,当拿到这份代码,我的Setup就开始报错,随后经历了三天毫无收获的调试,网上关于C#调用Python的资料较少,特别是通过C++链库这种方式的资料更少,故写此博客,来记录这次魔幻的Debug之旅

paulwang111的博客 661

C# 调用Python生成的pyd文件

C#调用pyd的笔记。防止以后自己忘了流程。

sxmsxmsmxm的博客 1758
上一篇: python里调用外部控制台应用程序的方法~
下一篇: python中采用opencv作常规的图片处理的方法~~~
happybasic
博客等级 码龄19年 122粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happybasic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值