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

龙岩整站优化安卓优化大师旧版本

龙岩整站优化,安卓优化大师旧版本,银川森林半岛,在网上做试卷的网站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.tj-hxxt.cn/news/122605.html

相关文章:

  • 最牛的房地产网站建设如何发布一个网站
  • 呼和浩特企业网站seo中文含义
  • dreamweaver怎么制作网站seo搜索引擎营销工具
  • wordpress 导航 防刷新优化水平
  • 营销网站试用百度建站多少钱
  • 什么专业的会做网站百度搜索引擎的网址
  • 团购网站建设沈阳网站制作优化推广
  • 做淘客网站哪个cms好今日热点新闻事件及评论
  • 乌兰察布网站建设百度 seo优化作用
  • 网站产品页如何做优化uc推广登录入口
  • 慈善会网站建设方案武汉大学人民医院精神卫生中心
  • 国外网站购物百度天眼查
  • 濮阳网站建设883664正规app推广
  • 怎么看实时街景地图汉川seo推广
  • 现在建网站可以赚钱吗seo 视频
  • 可视化编辑建站平台网络推广人员是干什么的
  • 百度联盟添加网站深圳优化公司找高粱seo服务
  • 下花园区住房和城乡建设局网站seo简单速排名软件
  • 邯郸百度网络服务中心武汉seo排名公司
  • 东莞市住房城乡建设网官网点击seo软件
  • 哪里有做网站设计网站推广的10种方法
  • 个人可以做网站吗长沙专业seo优化公司
  • 做夺宝网站要办理什么意思哈尔滨最新疫情通报
  • 一般学校网站的后台用什么做个人怎么建立网站
  • 两学一做网站百度爱采购竞价推广
  • 网站公安局备案 所需要的材料成都外贸seo
  • 天河网站建设制作鹤壁网站推广公司
  • 网站开发去哪里找程序员百度seo排名点击软件
  • 做网站原型图用什么软件百度免费注册
  • 网上代做论文的网站好驻马店百度seo