pythonnet简介

pythonnet是cpython的扩展

pythonnet提供了cpython和.net程序集之间交互的桥梁

pythonnet开源在github上

pythonnet安装

通过pip install pythonnet安装

pythonnet的使用帮助

pythonnet的使用帮助,请参见github.

pythonnet中的坑

cpython是分32和64位的,对应的pythonnet也是分的,版本要对应好

pythonnet最核心的就是python.Runtime.dll动态库,这个库是c#编写的实现了两种语言的交互

ref类型的参数如何返回

返回值的第一个元素是c#的返回值

返回值的第二个元素就是ref的值了,ref String[] 对应的返回值第二个元素就是元组tuple

如何加载动态库

# clr是公共运行时环境,该模块是与c#交互的核心

import clr

import sys

# 导入clr时这个模块最好也一起导入,这样可用使用AddReference()方法

import System

# input()

from System import Array

from System import String

# 打印当前.net运行时的版本

print(System.Environment.Version)

# 打印当前的环境变量

print('---------------------')

for p in sys.path:

print(p)

print('---------------------')

# 加载动态,不要带动态库的后缀名,如果d=None,表示动态库没有找到

d = clr.FindAssembly('YctxKj.Card.Interpreter')

print(d)

# from后面跟的是动态库的名字,不是命名空间

from YctxKj.Card.Interpreter import *

d = clr.FindAssembly('YctxKj.Card.CardReader')

print(d)

from YctxKj.Card import CardReader

# 打印程序集,如果动态库加载成功,程序集里就会含有动态库的程序集

lt = clr.ListAssemblies(False)

for i in range(lt.Length):

print('%d = %s' % (i,lt[i]))

ret = 0

# 程序调用业务代码

_reader = CardReader()

_Interpreter = ScriptInterpreter()

_Interpreter._reader = _reader

_Interpreter.Init();

ret = _Interpreter.SetKeyMode(305)

print('ret=%d' % ret)

arCarder = ''

# input() 可以程序暂停,然后使用vs附加进程python.exe调试

# input()

ret = _reader.ListReader(arCarder);

print('ret = %d' % ret[0])

print('ref param string[] length = %d' % ret[1].Length)

if ret[1].Length > 0:

items = ret[1]

for t in items:

print(t)

else:

print('don\'t find cardreader dev')

exit()

# 链接读卡器

strReader = items[1]

strATR = ''

nRet = _reader.Connect(strReader, strATR)

if nRet[0] != 0:

print('connect card fail, nRet=%d' % nRet[0])

_reader.Beep()

_reader.Beep()

exit()

print('crd connect successed,atr=%s' % nRet[1])

_reader.Beep()

# 断开读卡器

_reader.Disconnect()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

pythonnet 详解,Python调用.net动态库实现过程解析相关推荐

  1. python调用c#dll_详解Python 调用C# dll库最简方法

    1.为什么要跨平台编程?双平台编程或多平台编程,只是为提供更好开发更兼容的解决方案的一种手段,编程时服务于产品和客户的,也是因地制宜. 先安装python所需的库clr ,我这里已经安装了,可以去对应 ...

  2. python调用.net动态库

    # python调用.net动态库 ### pythonnet简介 ----------------------------- - pythonnet是cpython的扩展 - pythonnet提供 ...

  3. python调用c++动态库 linux_linux中使用boost.python调用c++动态库的方法

    前言 最近开始使用 robot framework 测试c++的动态库,robot framework 是跑在 windows 上面,c++动态库是跑在远程linux主机上面.测试办法是让 robot ...

  4. python调用cmd命令释放端口_详解python调用cmd命令三种方法

    目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...

  5. python调用c++动态库

    python调用C++动态库 生成C++动态库 1.编译成64位的dll库 2. C++ 模板 3. 示例 Python调用带参数的动态库 python与c数据类型 int.long.float.do ...

  6. python调用ping命令并输出ttl_详解Python调用系统命令的六种方法

    作为胶水语言,Python可以很方便的执行系统命令,Python3中常用的执行操作系统命令有os.system().os.popen().subprocess.popen().subprocess.c ...

  7. python调用c++动态库_Python应用:调用C/C++动态链接库的方法详解

    Linux系统下调用动态库(.so) 1.linuxany.c代码如下: #include "stdio.h" void display(char* msg){ printf(&q ...

  8. python调用c++动态库_Python调用C/C++动态链接库的方法

    本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: //hello.h #ifdef E ...

  9. python调用qt动态库_QT开发——动态库(.so文件)的生成与调用

    1.qmake方式生成和调用动态库 链接:https://blog.csdn.net/lywzgzl/article/details/42805991 2.cmake方式生成和调用动态库 2.1创建共 ...

最新文章

  1. python压缩与解压缩
  2. 2015年度互联网安全报告发布 移动支付成重灾区
  3. 平衡二叉树的构造_LeetCode 题解 | 110.平衡二叉树
  4. 计算机前端专业术语,学习计算机知识必须懂得50个专业术语
  5. 配置ELK添加marvel插件
  6. Objective-C 编码规范
  7. linux编译避免污染源码分离,如何避免linux上的系统标准C/C++库?
  8. mfc如何删除lineto画的_有哪些好用的板绘软件?衣服上的花纹怎么画?
  9. 前后端分离使用 Token 登录解决方案
  10. Android Studio 导入 AOSP 源码 1
  11. OpenGL+VS2013环境配置
  12. 复制一个空洞文件且忽略掉其空洞内容
  13. mysql数据库学习6_MySQL学习(六)
  14. SpringBoot整合shiro的一个例子
  15. 7塞班贝拉系统下载_远观JAVA,近观鸿蒙,盘点那些年我们用过的手机系统
  16. Unity3D入门篇
  17. 液压机行业研究及十四五规划分析报告
  18. 超像素分割SLIC与SLIC0(SLIC Zero)算法的区别
  19. php公益培训第2部,PHP高手之路-传世经典第二部直播课表
  20. Windows系统下的百度云不限速

热门文章

  1. linux下jmap 内存命令,Linux下jmap命令查看内存使用
  2. 怎么设置能使电脑运行更快
  3. 使用污点分析检查log4j问题
  4. 香港儿科医学会:小儿发烧,七个不处理原则
  5. 有限空间作业如何预防窒息和中毒
  6. 希捷1TB硬盘正式发布
  7. 组合逻辑电路——半加器
  8. NIKE KOBE A.D. NXT PERFORMANCE REVIEW
  9. C#.NET自动生成Excel图形报表
  10. 【设计】安卓IOS界面尺寸