Verwendung der C-Bibliothek in Python

Informationen zum ctypes-Modul von Python

1. Verwendung von ctypes

Zunächst, wie man das Modul importiert.

howToImport.py


from ctypes import *

Weiter, wie man dynamische Links und Funktionen der C-Bibliothek verwendet.

howToLoadLib.py


msvcrt=CDLL("C\\WINDOWS\\System32\\msvcrt.dll")
str="On Python!!"
msvcrt.printf("Hello World : %s",str)

Übrigens gibt es verschiedene dynamische Verknüpfungsmethoden wie CDLL (), windll (), oledll usw. Ich bin ein absoluter Anfänger, daher ist es etwas verwirrend, aber vielleicht verwende ich es je nach Betriebssystem richtig ...?

Eingabefunktionen wie get () können übrigens auch normal verwendet werden. Auch für dynamische Links,

howToLoad_2.py


msvcrt=cdll.msvcrt

Aber es scheint, dass es getan werden kann. (Ich frage mich, ob dies häufiger vorkommt ...?)

Ich weiß das auch nicht im Detail, aber vielleicht kann es verwendet werden, wenn es umgebungsabhängig ist und sich im Standardbibliotheksverzeichnis befindet ...? Sie können dies normal tun, ohne hier einen absoluten Pfad zu schreiben.

2. C-Typen können mit c-Typen verwendet werden!

In Python müssen Sie im Allgemeinen keinen Typ für eine Variable angeben, in C müssen Sie jedoch einen Typ für eine Variable angeben. Und da es in Python keine C-Sprachtypen gibt, hat ctypes sie für Sie bereitgestellt! Zum Beispiel

howToHensu.py


str=c_char_p("AAA")

hensu.c


char *str="AAA"

Zwei Programme wie dieses sind wahrscheinlich gleich. Ich kenne die Details nicht, aber vielleicht ist das, was ich tue, dasselbe. Dies ist nur ein Beispiel, und es gibt viele wie char, int, short, long, double, float, void * und so weiter.

Übrigens, wenn Sie als Referenz in C-Sprache übergeben möchten, verwenden Sie eine Methode namens byref (). Wenn Sie beispielsweise einen Zeiger auf ein Funktionsargument übergeben möchten, können Sie ihn wie myfunc (byref (Zeiger)) verwenden. In diesem Fall ist der Zeiger nur eine Variable.

Sie können auch Strukturen und Kommunalitäten sowie Variablen verwenden.

howToStruct.py


class Test(Structure):
_fields_=[
("testInt",c_int),
("testChar",c_char),
]

Sie können auch eine solche Struktur erstellen. (Ich werde den gemeinsamen Körper weglassen, weil ich nicht genug gelernt habe und noch nicht weiß, wie ich ihn verwenden soll.)

Referenz

Übrigens kaufte ich ein Buch mit dem Titel "Reverse Engineering - Binäre Analysetechniken mit Python-" und fing an, diese Geschichte zu lesen, also schrieb ich sie. Ich habe gerade angefangen zu lesen, also würde ich es gerne wieder hochladen, wenn ich etwas mehr lese! URL: Reverse Engineering-Binäranalysetechnik mit Python-

Übrigens ist dies das erste Mal, dass Qiita es tut, also hoffe ich, dass Sie es mit warmen Augen sehen können ... w Ich bin ein absoluter Anfänger, daher wäre es sehr hilfreich, wenn Sie auf Fehler hinweisen könnten!

Recommended Posts

Verwendung der C-Bibliothek in Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
Verwendung von Anfragen (Python Library)
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
[Python] Verwendung der Diagrammerstellungsbibliothek Altair
Verwendung des in Lobe in Python erlernten Modells
[Einführung in Python] Wie verwende ich eine Klasse in Python?
So debuggen Sie eine Standard-Python-Bibliothek in Visual Studio
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
Verwendung der Methode __call__ in der Python-Klasse
Verwendung von Google Test in C-Sprache
Verwendung von __slots__ in der Python-Klasse
Hinweise zur Verwendung von Marshmallow in der Schemabibliothek
Verwendung regulärer Ausdrücke in Python
Verwendung ist und == in Python
Verwendung von Sternchen (*) in Python. Vielleicht ist das alles? ..
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
[Anfängernotiz] So legen Sie den Lesepfad der Bibliothek in Python fest
So generieren Sie eine Sequenz in Python und C ++
Verwendung der Grafikzeichnungsbibliothek Bokeh
Zusammenfassung der Verwendung von MNIST mit Python
[Algorithmus x Python] Verwendung der Liste
So erhalten Sie die Dateien im Ordner [Python]
Wie man tkinter mit Python in Pyenv benutzt
Verwenden Sie die LibreOffice-App in Python (3) Bibliothek hinzufügen
python3: Verwendung der Flasche (2)
Verwendung des Generators
[Python] Verwendung von Liste 1
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
Wie man in Python entwickelt
[Python] Verwendung von input ()
Wie benutzt man den Dekorateur?
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
So rufen Sie den n-ten größten Wert in Python ab
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
So erhalten Sie den Variablennamen selbst in Python
So ermitteln Sie die Anzahl der Stellen in Python
Wie Sie das aktuelle Verzeichnis in Python in Blender kennen
Verwendung von Raspeye Relay Module Python
Ich wollte die Python-Bibliothek von MATLAB verwenden
Verwendung der Exist-Klausel in Django Queryset
[Einführung in die Udemy Python3 + -Anwendung] 27. Verwendung des Wörterbuchs
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
[Einführung in die Udemy Python3 + -Anwendung] 30. Verwendung des Sets
Verwendung der Solver-Bibliothek "kociemba" von Rubik Cube
[Python] So geben Sie Listenwerte der Reihe nach aus
Ich möchte R-Datensatz mit Python verwenden
[Python] Wie man PCA mit Python macht
Python: So verwenden Sie Async mit
Verwendung der Zip-Funktion