国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python調用C# Com dll組件實戰教程

2020-02-16 10:22:16
字體:
來源:轉載
供稿:網友

之前公司有套C# AES加解密方案,但是方案加密用的是Rijndael類,而非AES的四種模式(ECB、CBC、CFB、OFB,這四種用的是RijndaelManaged類),Python下Crypto庫AES也只有這四種模式,進而Python下無法實現C# AES Rijndael類加密效果了。

類似于這種C# 能實現的功能而在Python下實現不了的,搜集資料有兩種解決方案,第一種方式,使用IronPython 直接調用C# dll文件,教程網上很多,不在贅述了,這種方式有個缺點,用的是ironPython而非Python,只是集成了一些.net framework庫的Python版本,更新維護少;第二種方式是,C# dll源碼編譯成Com組件,Python再調用COM組件Dll的方法。

網上有很多Python調用COM dll教程,但大部分是C或C++編寫的dll,很少有比較全面的講解COM組件生成至調用過程,下面結合自己摸索多天的經歷,簡單介紹下如何生成COM組件,以及用Python如何調用COM dll組件,分享給大家。

我也是小白 ……^ ^,高手請飄過,如有寫的不對之處,還請多多包涵以指正...

1.如何生成C# COM組件

我用的是Microsoft visual studio 2010, 首先新建--項目--選擇【類庫】,名稱自定義:ComToPython,點擊【確定】

重命名cs文件:ComToPython.cs,可自定義。 彈窗選擇【是】

COM可見性設置為 True:

上面等同于以下項目屬性設置:

勾選“為COM互操作注冊”:

新建簽名ComToPythonKey,取消勾選 “使用密碼保護密鑰文件”

編寫接口類IMyClass,ComToPython類實現接口的三個方法,例如Add()方法就是我們想要實現的功能,返回a與b之和。

ComToPython類之前的[ClassInterface(ClassInterfaceType.None)]一定要有,否則Python調用時會報錯。

[ProgId("ComToPython.Application")]指定Python調用COM時的名稱,后面Python代碼會看到。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices; namespace ComToPython{  [Guid("350779B9-8AB5-4951-83DA-4CBC4AD860F4")]  public interface IMyClass  {    void Initialize();    void Dispose();    int Add(int x, int y);  }   [ClassInterface(ClassInterfaceType.None)]  [Guid("16D9A0AD-66B3-4A8A-B6C4-67C9ED0F4BE4")]  [ProgId("ComToPython.Application")]  public class ComToPython: IMyClass  {    public void Initialize()    {      // nothing to do     }     public void Dispose()    {      // nothing to do     }     public int Add(int x, int y)    {      return x + y;    }  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汾西县| 酒泉市| 长岭县| 孟津县| 青浦区| 方山县| 弋阳县| 柳河县| 芜湖县| 天峨县| 合作市| 西丰县| 成都市| 枣阳市| 衡东县| 武强县| 新乡市| 丰台区| 错那县| 金沙县| 高安市| 商都县| 陆河县| 寿宁县| 宁远县| 耒阳市| 宁南县| 耒阳市| 洛扎县| 方城县| 威远县| 丽江市| 山阳县| 邢台县| 固镇县| 将乐县| 阳朔县| 长海县| 中牟县| 苏尼特左旗| 陆良县|