当前位置: 首页 > news >正文

中国银行建设网站首页囯家信用信息公示系统

中国银行建设网站首页,囯家信用信息公示系统,wordpress必装,徐州建设工程网python导入C#动态库问题 背景介绍 我使用的python是3.7,需要调用之前已经用于其他项目的C#编写的动态库(xx.dll).由于调用方法很简单,可以参考下这个调用动态库,这里主要说一下我遇到的问题。 试图加载格式不正确的程序 这个问题实际是由于目标程序和…

python导入C#动态库问题

背景介绍

我使用的python是3.7,需要调用之前已经用于其他项目的C#编写的动态库(xx.dll).由于调用方法很简单,可以参考下这个调用动态库,这里主要说一下我遇到的问题。

试图加载格式不正确的程序

这个问题实际是由于目标程序和调用的dll不处于相同的编码上,我的目标python使用的是64位编译,而调用的程序采用的是32位编译,这就导致调用出错。可以参考这个详解Python 调用C# dll库最简方法中的2来改变动态库的编码。

引入clr,却无法使用FindAssembly等函数

有一个clr包,但是python调用clr包却是从pythonnet里面的模块,所以下载时候一定要下载对了。但是我自动安装的时候,发现clr成功import了,但是里面不包含常用的findAssembly等函数。之后发现大多的说明的是2.5左右的版本,而我的安装包是3.1的,于是没办法只能退回去,按装了指定的版本2.5.1的了。问题给解决了。

动态加载dll库

我的项目要求尽可能兼容其他不同语言编写的dll,所以我这里就使用了反射来加载C#动态库。首先,python程序指定位置(我用的是xml文件)配置上需要加载的dll路径,然后python程序启动的时候就根据配置文件指定的路径一个个加载dll。这就导致python在import的时候不知道import哪个模块(只知道模块的名字),于是我就各种找如何动态引入。最后发现使用exec执行命令的方式完美解决。具体方式如下:

		sys.path.append(os.getcwd() + "\\static\\dll")if ".dll" in dllPath:backRec = dllPath.index(".dll")tempModuleName = dllPath[0:backRec]clr.FindAssembly("static/dll/" + tempModuleName)else:clr.FindAssembly("static/dll/" + dllPath)clr.AddReference(tempModuleName)execcmd = "from %s import %s,%s" % (nameSpace, classname, InitClassName)exec(execcmd)

反射模块(inspect)使用问题

导入模块之后,需要根据配置文件中具体的方法名称,类名称来获取对应的方法和类。所以使用inspect这个模块,inspect可以通过getmembers来获取具体的属性。然后根据名字找到对应的方法和类。具体代码可以参考如下:

        for key, obj in inspect.getmembers(sys.modules[nameSpace]):if key == classname:curParseClass = objbreak

curParseClass就是名字位classname的类,然后就可以用其进行初始化对象并调用类成员函数,或者直接调用静态函数或者对象。但是这里我碰到一个问题就是inspect.getmembers获取对象属性时有时会失败,失败的原因是,调用的C#动态库定义的类中有个属性由枚举转化得到的字符串,即私有属性_deviceType为string,公有属性DeviceType为枚举对象,get返回时,使用名称获取对应的枚举返回。但是_deviceType的默认值为空,而其枚举里并没有这个属性,就会导致inspect.getmembers将DeviceType转化为string时出现了无法转化的情况。

http://www.yayakq.cn/news/913237/

相关文章:

  • 一个网站两个域名 seowordpress 打开空白
  • 课程网站开发卷宗门户网站建设为企业带来的好处
  • 东莞网站建设营销网站温州网页设计
  • iis 会影响 网站 速度太原seo关键词排名
  • 菏泽市城乡和建设局网站wordpress主页主题
  • 如何能把网站做的更大外国网站在中国做推广
  • 第一章 网站建设基本概述怎么做网站和注册域名
  • 宁夏公路建设局网站竞价网官网
  • 做图片素材的网站有哪些廊坊网站建站
  • 怎么用flash做视频网站wordpress 查询模板
  • 北京网站建设公司 网络服务在上海总部互联网公司排名
  • 个人做网站需要学什么只是广东微信网站制作费用
  • 深圳网站设计 建设首选深圳市wordpress投票功能
  • 官方网站建设网络规划设计师2022论文题目
  • 网站制作 合同深圳 做网站 互联
  • 帝国cms网站名称168推广
  • 百度网站抓取时间查询建设报名系统
  • 阳春网站制作wordpress图片灯箱效果
  • 国外建站企业wordpress ezsql
  • 安装网站源码wordpress nginx 301
  • 网站建设的基本流程是什么装修10万元利润是多少
  • 网站安装教程深圳建网站哪个公司好
  • 江苏林润建设工程有限公司网站克隆网站到wordpress修改
  • 怎么做整蛊网站python做网站稳定吗
  • 宽屏网站背景js 网站跳转
  • 网站后端性能优化措施申请域名有什么用
  • 网站目标定义济南网站优化公司电话
  • 程序员做项目网站西宁做网站需要多少钱
  • dedecms网站后台模板修改免费的毕业设计网站建设
  • 南京做网站优化的公司罗湖网站制作多少钱