当前位置: 首页 > 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.dt0577.cn/news/29517.html

相关文章:

  • 17网站一起做网店普宁轻纺城温馨免费网站推广网站在线
  • 太原运营推广公司济南seo
  • 火车头wordpress教程企业网站排名优化价格
  • 国外财经网站是怎么做的品牌策划是做什么的
  • 商贸有限公司网站建设线上销售水果营销方案
  • 做网站的公司排行企业宣传网站
  • 建好了网站怎么做外贸网站排名优化培训
  • 青岛网站建设与管理seo核心技术排名
  • 网站设置关键字广告设计与制作
  • 做平面常用的网站seo高端培训
  • 企业网站怎么做跟淘宝链接广州疫情最新消息今天封城了
  • 做网站资讯男生和女生在一起探讨人生软件
  • 熊掌号wordpress搜索引擎优化自然排名
  • 哪种技术做网站容易论文答辩sem网络营销
  • 上市公司网站建设石家庄百度推广排名优化
  • 怎么做 niche网站重庆seo排名电话
  • 那些网站反爬做的好湖南株洲疫情最新情况
  • 自己做b2b平台网站建设公众号怎么做文章推广
  • 做兼职上哪个网站搜狗推广登录平台
  • 网站建设开发计划书seo快速排名是什么
  • 怎么用wix做网站营销推广方案范文
  • wordpress 目录样式搜索引擎内部优化
  • 超市代理商网站模板电商平台引流推广
  • 武汉百度搜索优化长沙网址seo
  • 人流什么时间做 新闻源网站关键词优化公司推荐
  • 关于校园网站设计的毕业论文百度霸屏推广靠谱吗
  • 最专业的医疗网站建设网络营销的概述
  • 六安网约车收入怎么样百度关键词seo排名软件
  • 做qq主题的网站seo网站怎么搭建
  • 中国做的好的房产网站营销推广外包公司