Heim Backend-Entwicklung Python-Tutorial Detaillierte Erläuterung des Prozesses zum Aufrufen der C#-Com-DLL-Komponente durch Python

Detaillierte Erläuterung des Prozesses zum Aufrufen der C#-Com-DLL-Komponente durch Python

Oct 12, 2017 am 11:16 AM
.net python

Der folgende Editor bietet Ihnen ein praktisches Tutorial zum Aufrufen von C#-Com-DLL-Komponenten in Python. Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Herausgeber und werfen wir einen Blick darauf

Zuvor hatte das Unternehmen eine C#-AES-Verschlüsselungs- und Entschlüsselungslösung, aber die Lösung verwendete die Rijndael-Klasse für die Verschlüsselung anstelle der vier Modi von AES (ECB, CBC, CFB, OFB. Diese vier verwenden die RijndaelManaged-Klasse, und die Crypto-Bibliothek AES unter Python verfügt nur über diese vier Modi, und der Verschlüsselungseffekt der C#-AES-Rijndael-Klasse kann unter Python nicht erreicht werden.

Ähnlich wie bei dieser Funktion, die in C# erreicht, aber nicht in Python implementiert werden kann, gibt es zwei Lösungen zum Sammeln von Informationen. Die erste Möglichkeit besteht darin, IronPython zum direkten Aufrufen der C#-DLL-Datei zu verwenden im Internet, daher werde ich nicht auf Details eingehen. Ja, diese Methode verwendet ironPython anstelle von Python. Sie integriert nur einige Python-Versionen der .net-Framework-Bibliothek, die weniger Aktualisierungen und Wartung erfordert Die Methode besteht darin, den C#-DLL-Quellcode in eine COM-Komponente zu kompilieren und ihn dann in Python aufzurufen. Methoden der COM-Komponenten-DLL.

Es gibt viele Python-Tutorials zum Aufrufen von COM-DLLs im Internet, aber die meisten davon sind in C oder C++ geschrieben. Es gibt nur wenige umfassende Erklärungen zum Aufrufprozess von COM-Komponenten Zusammenfassung basierend auf meiner eigenen mehrtägigen Erkundungserfahrung. Stellen Sie vor, wie man COM-Komponenten generiert und COM-DLL-Komponenten mit Python aufruft. Teilen Sie sie mit allen.

Ich bin auch ein Neuling... ^ ^, Experten, bitte kommen Sie vorbei. Wenn in dem, was ich geschrieben habe, etwas falsch ist, verzeihen Sie mir bitte und korrigieren Sie mich...

1 .So generieren Sie eine C# COM-Komponente

Ich verwende zunächst Microsoft Visual Studio 2010 Erstellen Sie ein neues Projekt. Wählen Sie [Klassenbibliothek] aus, passen Sie den Namen an: ComToPython, klicken Sie auf [OK]

, um die CS-Datei umzubenennen: ComToPython.cs kann individuell angepasst werden. Wählen Sie im Popup-Fenster [Ja]

COM-Sichtbarkeit ist auf True eingestellt:

Das Obige entspricht den folgenden Projekteigenschafteneinstellungen:

Aktivieren Sie „Für COM-Interop registrieren“:

Neu erstellen Signatur ComToPythonKey und deaktivieren Sie „Passwortgeschützte Schlüsseldatei verwenden“

Schreiben Sie die Schnittstellenklasse IMyClass, und die ComToPython-Klasse implementiert die drei Methoden der Schnittstelle. Zum Beispiel die Add( )-Methode ist die Funktion, die wir implementieren möchten, und gibt a und b zurück.

Vor der ComToPython-Klasse muss [ClassInterface(ClassInterfaceType.None)] stehen, sonst wird beim Aufruf von Python ein Fehler gemeldet.

[ProgId("ComToPython.Application")] gibt den Namen an, wenn Python COM aufruft, der im nachfolgenden Python-Code angezeigt wird.


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

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;

    }

  }

}

Nach dem Login kopieren

GUID wird mit dem Tool generiert, das mit VS2010 geliefert wird. Klicken Sie, um die beiden GUIDs zu kopieren und vor den beiden Klassennamen zu platzieren

Hinweis: Klicken Sie auf „Neue GUID“, um die neu erstellte GUID zu kopieren:

Schließlich wird F6 kompiliert, um die Lösung zu generieren, und debuggt es in Ihrem Projekt. Es wird ComToPython.dll im Verzeichnis generiert:

Der letzte Schritt besteht darin, die COM-Komponente im System zu registrieren

Start Menü – Öffnen Sie das CMD-Befehlsfenster, das mit VS 2010 geliefert wird (Administratorrechte). Suchen Sie den Ordner ComToPython.dll.

Ausführen: gacutil /i ComToPython.dll. DLL zum globalen Cache hinzufügen.

Ausführen : regasmComToPython.dll Registrieren Sie die DLL im System

2. PythonSo rufen Sie COM auf dllKomponente

Ich verwende Python 2.7, PyCharm 2017.1 für IDE, PyCharm neu – Projekt ComToPython, neue Projekt-Py-Datei ComToPython.py

Einstellungen – zwei abhängige Bibliotheken hinzufügen:

Pywin32- und Comtypes-Abhängigkeitsbibliotheken hinzufügen und installieren, um den beiden letztgenannten Arten zum Aufrufen von COM-Komponenten zu entsprechen:

Nachdem die Abhängigkeiten installiert sind, befindet sich im Site-Packages-Verzeichnis des Python-Installationsverzeichnisses ein Doppelklick auf makepy.py

unter C:Python27Libsite-packageswin32comclient. Wählen Sie ComToPython aus und klicken Sie auf OK

然后拷贝上面VS2010生成的COM组件ComToPython.dll至PyCharm ComToPython项目文件夹下:

编写python调用COM dll代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#!/usr/bin/env python

# -*- coding: utf-8 -*-

a=1

b=2

print "方法一:"

from win32com.client import Dispatch

dll = Dispatch("ComToPython.Application")

result = dll.Add(a, b)

print "a + b = " + str(result)

 

print "方法二:"

import comtypes.client

dll = comtypes.client.CreateObject('ComToPython.Application')

result = dll.Add(a, b)

print "a + b = " + str(result)

Nach dem Login kopieren

运行代码,执行结果如下:

以上就是Python调用C# COM Dll整个过程了

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Prozesses zum Aufrufen der C#-Com-DLL-Komponente durch Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So laden Sie Deepseek Xiaomi herunter So laden Sie Deepseek Xiaomi herunter Feb 19, 2025 pm 05:27 PM

So laden Sie Deepseek Xiaomi herunter

Was sind die Vor- und Nachteile des Templatings? Was sind die Vor- und Nachteile des Templatings? May 08, 2024 pm 03:51 PM

Was sind die Vor- und Nachteile des Templatings?

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Jul 01, 2024 am 07:22 AM

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern May 06, 2024 pm 03:52 PM

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks May 06, 2024 pm 04:43 PM

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen May 06, 2024 pm 02:00 PM

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen

Wie fragst du ihn Deepseek? Wie fragst du ihn Deepseek? Feb 19, 2025 pm 04:42 PM

Wie fragst du ihn Deepseek?

So speichern Sie die Evaluierungsfunktion So speichern Sie die Evaluierungsfunktion May 07, 2024 am 01:09 AM

So speichern Sie die Evaluierungsfunktion

See all articles