Appelez votre propre bibliothèque partagée en langage C à partir de Python à l'aide de ctypes

J'ai découvert comment appeler et utiliser la bibliothèque de langage C en Python, alors prenez-en note.

Environnement

Environnement de compilation: gcc inclus dans Xcode 10.2. Python:3.7.2

Créer une bibliothèque partagée en langage C

Créez une bibliothèque (libmyadd.so) à appeler depuis Python. Le contenu de la bibliothèque se compose de fonctions d'ajout de type entier.

math.c


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

Pour créer une bibliothèque partagée, exécutez la commande suivante:

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

Cela créera libmyadd.so.

Utilisez libmyadd.so de Python

Le code python pour appeler cela depuis Python est le suivant. On suppose que l'emplacement de la bibliothèque est le même répertoire que le code source.

main.py


import ctypes as ct

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

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

Autres (utilisez votre propre bibliothèque en C

En aparté, notez lorsque vous appelez depuis le langage C. On suppose que l'emplacement de la bibliothèque est le même répertoire que le code source.

main.c


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

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

Compilez ceci comme suit.

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

Pour ce faire, procédez comme suit:

LD_LIBRARY_PATH=./myadd ./main

Résumé

Cette fois, j'ai utilisé un package appelé ctypes of Python pour appeler une bibliothèque partagée de langage C que j'ai créée à partir de Python. Il y a encore une compréhension vague, donc je voudrais enquêter et mettre à jour l'article la prochaine fois.

Le fichier créé est publié sur GitHub.

Référence

Comment créer et lier dynamiquement des bibliothèques partagées sous Linux: smart space Python Document 3.7

Recommended Posts

Appelez votre propre bibliothèque partagée en langage C à partir de Python à l'aide de ctypes
Appelez votre propre bibliothèque de langage C avec Go en utilisant cgo
Appelons votre propre bibliothèque C ++ avec Python (Préférences)
Appeler le langage C depuis Python (python.h)
Utilisons le langage de script pour une vie confortable en C ++ 4 - Utilisons la propre bibliothèque de C ++ à partir du langage de script -
Appelez votre propre module python à partir du package ROS
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
Appeler des fonctions du langage C depuis Python pour échanger des tableaux multidimensionnels
Appeler C depuis Python avec DragonFFI
Appeler popcount depuis Ruby / Python / C #
Appeler C / C ++ depuis Python sur Mac
[Python] Enregistrez votre propre bibliothèque dans PyPI
Publiez votre propre bibliothèque Python sur Homebrew
Générer un langage C à partir d'une expression S avec Python
Langage C pour voir et se souvenir de la partie 2 Appeler le langage C à partir de la chaîne Python (argument)
Langage C pour voir et se souvenir de la partie 1 Appeler le langage C depuis Python (bonjour le monde)
Langage C pour voir et se souvenir de la partie 4 Appelez le langage C depuis Python (argument) double
Langage C pour voir et se souvenir de la partie 5 Appel du langage C à partir du tableau Python (argument)
[Python] Implémentez votre propre classe de type liste à l'aide de collections.UserList
Linux C / C ++ Créez votre propre environnement de création de bibliothèque
Appelez la bibliothèque Python pour la normalisation de texte depuis MATLAB
Appel de scripts Python à partir de Python intégré en C ++ / C ++
Langage C pour voir et se souvenir de la partie 3 Appelez le langage C depuis Python (argument) c = a + b
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Jusqu'à ce que vous puissiez installer votre propre bibliothèque Python avec pip
Exécutez l'intelligence de votre propre bibliothèque python avec VScode.
Aller au langage pour voir et se souvenir de la partie 8 Appeler le langage GO à partir de Python
Transmettez les données OpenCV de la bibliothèque C ++ d'origine à Python
Aplatir à l'aide du rendement Python de
Appeler CPLEX depuis Python (DO cplex)
Installez mecab sur le serveur partagé Sakura et appelez-le depuis python
Compilation croisée pour Raspberry Pi Zero sur Debian - Créez votre propre bibliothèque partagée
Le pré-traitement, le post-traitement, etc. MobileNetV2-SSDLite sont en partie transformés en une bibliothèque partagée C ++ et appelés à partir de Python
Appelez Matlab depuis Python pour optimiser
[Python] Créez votre propre bot LINE
Utilisation de Rstan de Python avec PypeR
Remarques sur l'utilisation de MeCab depuis Python
Introduction à Protobuf-c (langage C ⇔ Python)
Utiliser Cloud Storage depuis Python3 (Introduction)
Conseils pour appeler Python à partir de C
Exécuter du code Python à partir de l'interface graphique C #
Appelez python de nim avec Nimpy
Python pour passer d'une autre langue
Exécutez Ansible à partir de Python à l'aide de l'API
Précautions lors de l'utilisation de phantomjs de python
Essayez d'utiliser Amazon DynamoDB à partir de Python
[python] Comment ajouter RDF triple à votre propre serveur Fuseki en utilisant rdflib