Rufen Sie mit ctypes Ihre eigene gemeinsam genutzte Bibliothek in C-Sprache von Python aus auf

Ich habe herausgefunden, wie man die C-Sprachbibliothek in Python aufruft und verwendet. Notieren Sie sich dies.

Umgebung

Kompilierungsumgebung: gcc in Xcode 10.2 enthalten. Python:3.7.2

Erstellen Sie eine gemeinsam genutzte Bibliothek in C-Sprache

Erstellen Sie eine Bibliothek (libmyadd.so), die Sie von Python aus aufrufen können. Der Inhalt der Bibliothek besteht aus Ganzzahl-Add-Funktionen.

math.c


int add(int a, int b){ return (a + b); }

Führen Sie den folgenden Befehl aus, um eine gemeinsam genutzte Bibliothek zu erstellen:

gcc -shared -fPIC -o libmyadd.so math.c

Dadurch wird libmyadd.so erstellt.

Verwenden Sie libmyadd.so aus Python

Der Python-Code zum Aufrufen von Python lautet wie folgt. Es wird davon ausgegangen, dass sich der Speicherort der Bibliothek im selben Verzeichnis wie der Quellcode befindet.

main.py


import ctypes as ct

libc = ct.cdll.LoadLibrary("./libmyadd.so")

if (__name__ == "__main__"):
    print(libc.add(1, 2))

Andere (Verwenden Sie Ihre eigene Bibliothek in C

Notieren Sie sich nebenbei, wenn Sie aus der C-Sprache anrufen. Es wird davon ausgegangen, dass sich der Speicherort der Bibliothek im selben Verzeichnis wie der Quellcode befindet.

main.c


#include <stdio.h>
  
int add(int a, int b);

int main(void)
{
  printf("%d¥n", add(1, 2));
  return 0;
}

Kompilieren Sie dies wie folgt.

gcc -L./ -lmyadd -o main main.c

Gehen Sie dazu wie folgt vor:

LD_LIBRARY_PATH=./myadd ./main

Zusammenfassung

Dieses Mal habe ich das ctypes-Paket von Python verwendet, um meine eigene gemeinsam genutzte Bibliothek in C-Sprache von Python aus aufzurufen. Es gibt immer noch ein vages Verständnis, daher möchte ich den Artikel beim nächsten Mal untersuchen und aktualisieren.

Die erstellte Datei wird auf GitHub veröffentlicht.

Referenz

Erstellen und dynamisches Verknüpfen von gemeinsam genutzten Bibliotheken unter Linux: Smart Space Python Document 3.7

Recommended Posts

Rufen Sie mit ctypes Ihre eigene gemeinsam genutzte Bibliothek in C-Sprache von Python aus auf
Rufen Sie mit Go mit cgo Ihre eigene C-Sprachbibliothek auf
Rufen wir Ihre eigene C ++ - Bibliothek mit Python auf (Einstellungen)
Rufen Sie die c-Sprache von Python aus auf (python.h)
Verwenden wir die Skriptsprache für ein komfortables C ++ - Leben. 4 - Verwenden wir die eigene C ++ - Bibliothek aus der Skriptsprache. -
Rufen Sie Ihr eigenes Python-Modul aus dem ROS-Paket auf
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
Rufen Sie C-Sprachfunktionen von Python auf, um mehrdimensionale Arrays auszutauschen
Rufen Sie C von Python mit DragonFFI auf
Rufen Sie popcount von Ruby / Python / C # auf
Rufen Sie C / C ++ von Python auf dem Mac auf
[Python] Registrieren Sie Ihre eigene Bibliothek in PyPI
Veröffentlichen Sie Ihre eigene Python-Bibliothek auf Homebrew
Generieren Sie mit Python eine C-Sprache aus dem S-Ausdruck
C-Sprache zum Anzeigen und Erinnern Teil 2 Rufen Sie die C-Sprache aus der Python-Zeichenfolge (Argument) auf
C-Sprache zum Sehen und Erinnern Teil 1 Rufen Sie die C-Sprache aus Python auf (Hallo Welt)
C-Sprache zum Anzeigen und Erinnern Teil 4 Rufen Sie die C-Sprache von Python (Argument) double auf
C-Sprache zum Anzeigen und Erinnern Teil 5 Rufen Sie die C-Sprache aus dem Python-Array (Argument) auf
[Python] Implementieren Sie Ihre eigene listenähnliche Klasse mit collection.UserList
Linux C / C ++ Erstellen Sie Ihre eigene Bibliothekserstellungsumgebung
Rufen Sie die Python-Bibliothek zur Textnormalisierung in MATLAB auf
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
C-Sprache zum Sehen und Erinnern Teil 3 Rufen Sie die C-Sprache aus Python auf (Argument) c = a + b
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Bis Sie Ihre eigene Python-Bibliothek mit pip installieren können
Führen Sie die Intelligenz Ihrer eigenen Python-Bibliothek mit VScode aus.
Gehen Sie zur Sprache, um Teil 8 zu sehen und sich daran zu erinnern. Rufen Sie die GO-Sprache von Python aus auf
Übergeben Sie die OpenCV-Daten der ursprünglichen C ++ - Bibliothek an Python
Mit Python abflachen
Rufen Sie CPLEX von Python aus auf (DO cplex)
Installieren Sie mecab auf dem gemeinsam genutzten Sakura-Server und rufen Sie es von Python aus auf
Cross-Compiling für Raspberry Pi Zero unter Debian-Versuchen Sie, Ihre eigene gemeinsam genutzte Bibliothek zu erstellen
Die Vorverarbeitung, Nachbearbeitung usw. von MobileNetV2-SSD Lite wird teilweise in eine gemeinsam genutzte C ++ - Bibliothek umgewandelt und von Python aufgerufen
Rufen Sie Matlab von Python zur Optimierung auf
[Python] Erstelle deinen eigenen LINE-Bot
Verwenden von Rstan aus Python mit PypeR
Hinweise zur Verwendung von MeCab aus Python
Einführung in Protobuf-c (C-Sprache ⇔ Python)
Verwenden von Cloud-Speicher aus Python3 (Einführung)
Tipps zum Aufrufen von Python von C.
Führen Sie Python-Code über die C # -GUI aus
Rufen Sie Python von Nim mit Nimpy auf
Python, um von einer anderen Sprache zu wechseln
Führen Sie Ansible über Python mithilfe der API aus
Vorsichtsmaßnahmen bei der Verwendung von Phantomjs aus Python
Versuchen Sie es mit Amazon DynamoDB von Python
[Python] So fügen Sie RDF Triple mithilfe von rdflib zu Ihrem eigenen Fuseki-Server hinzu