Langage C pour voir et se souvenir de la partie 1 Appeler le langage C depuis Python (bonjour le monde)

C est utile pour faire des choses que python ne peut pas faire.

Le langage GO est plus pratique et plus rapide que le langage C, mais j'en suis accro avec 89 pointeurs. Parce qu'il est interfacé par valeur (par Value est basique et par référence n'est pas bon), l'index ne peut pas être pris même s'il est passé avec un pointeur.

Regardons un exemple de phrase basé sur le but de "voir et se souvenir".

Ce dont tu as besoin c'est

1. GCC ** gcc (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0** 2. Python Python 3.7.4 3. Éditeur avancé tel que le code Visual Studio Version: 1.41.1 (system setup) OS: Windows_NT x64 10.0.18362

Premier pas

Créez un dossier avec un nom approprié. Copions le programme ci-dessous!

> mkdir capi

** Appeler la bibliothèque de test python **

capi.py


import myModule as capi #Donnez-lui un nom approprié(Je suis accro au test
capi.hello()

** Corps de la bibliothèque **

capilib.c


#include <Python.h>
static PyObject* hello(PyObject* self, PyObject* args)
{
    printf("Bonjour le monde Tokyo\n");
    return Py_None;
}
//Définition du nom de la fonction, des spécifications, etc.
static PyMethodDef myMethods[] = {
    { "hello", hello, METH_NOARGS, "Hello World"},
    { NULL }
};
// Module Definition struct
static struct PyModuleDef myModule = {
 PyModuleDef_HEAD_INIT,"myModule","C API Module",-1,myMethods
};
//Initialisez la structure ci-dessus
PyMODINIT_FUNC PyInit_myModule(void)
{
    return PyModule_Create(&myModule);
}

Script de création de bibliothèque

setup.py


from distutils.core import setup, Extension
setup(name = 'myModule', version = '1.0.0',  \
   ext_modules = [Extension('myModule', ['capilib.c'])])

Créez une bibliothèque.

python setup.py install
running install
running build
running build_ext
running install_lib
running install_egg_info
Removing C:\ProgramData\Anaconda3\Lib\site-packages\myModule-1.0.0-py3.7.egg-info
Writing C:\ProgramData\Anaconda3\Lib\site-packages\myModule-1.0.0-py3.7.egg-info

Comment vérifier la bibliothèque

\capi>pip freeze
...
myModule==1.0.0
...

Mesures contre les caractères déformés

> chcp 65001

Exécuter

capi>python capi.py
Bonjour le monde Tokyo

Recommended Posts

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 2 Appeler le langage C à partir de la chaîne Python (argument)
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)
Aller au langage pour voir et se souvenir de la partie 8 Appeler le langage GO à partir de Python
Langage C pour voir et se souvenir de la partie 3 Appelez le langage C depuis Python (argument) c = a + b
Aller à la langue pour voir et se souvenir du langage Partie 7 C en langage GO
Appeler le langage C depuis Python (python.h)
Appeler des fonctions du langage C depuis Python pour échanger des tableaux multidimensionnels
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
Appelez Matlab depuis Python pour optimiser
Appeler popcount depuis Ruby / Python / C #
Introduction à Protobuf-c (langage C ⇔ Python)
Python pour passer d'une autre langue
Introduction à Ansible Partie 1 Hello World !! '
Appeler C / C ++ depuis Python sur Mac
[Python] Hit Keras depuis TensorFlow et TensorFlow depuis c ++ pour accélérer l'exécution.
De la création d'un environnement Python pour les personnes inexpérimentées à Hello world
Appelez votre propre bibliothèque partagée en langage C à partir de Python à l'aide de ctypes
[Il n'est pas trop tard pour apprendre Python à partir de 2020] Partie 3 Python Language Basic (1)
[Python] Application Web à partir de 0! Pratique (2) -Bonjour le monde-
De Python à l'utilisation de MeCab (et CaboCha)
python à retenir uniquement avec bonjour, mondes
Portage et modification du solveur de doublets de python2 vers python3.
Communication socket par langage C et Python
Tutoriel Flask (de l'installation à Hello World)
Générer un langage C à partir d'une expression S avec Python
Comment afficher Hello World en python
Hello World et détection de visage avec OpenCV 4.3 + Python
Comment générer une séquence en Python et C ++
De la création de l'environnement Kivy à l'affichage de Hello World
Écriture de journaux dans un fichier CSV (Python, langage C)
Essayez de porter le programme "FORTRAN77 Numerical Computing Programming" vers C et Python (partie 3)
Appelez Rust de Python pour accélérer! Tutoriel PyO3: Partie des classes d'habillage ➀
Essayez de porter le programme "FORTRAN77 Numerical Computing Programming" vers C et Python (partie 2)
Appelez Rust de Python pour accélérer! Tutoriel PyO3: partie des classes d'emballage ➁
Appel de scripts Python à partir de Python intégré en C ++ / C ++
Liste de code Python à déplacer et à mémoriser
Je veux créer du code C ++ à partir de code Python!
Un moyen simple d'appeler Java depuis Python
L'histoire du portage du code de C vers Go (et vers la spécification du langage)
Essayez de créer un module Python en langage C
Étude depuis le début de Python Hour1: Hello World
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Introduction au langage Python
Appelez Rust de Python pour accélérer! Tutoriel PyO3: Emballage d'une partie de fonction simple ➁
[Introduction à cx_Oracle] (Partie 6) Mappage des types de données DB et Python
Apprenez les bases et les astuces des expressions canoniques Python à partir de zéro
Comment se connecter à diverses bases de données à partir de Python (PEP 249) et SQL Alchemy
J'ai essayé d'illustrer le temps et le temps du langage C
De la configuration de l'environnement Rust à l'exécution de Hello World
Tutoriel Rabbit MQ (1) - De l'installation à Hello World (traduction du site officiel)
Orienté objet en langage C: "○ ✕ game" a été refacturé et porté en Python
Utilisez un langage de script pour une vie C ++ confortable-OpenCV-Port Python vers C ++ -
Transmettez les données OpenCV de la bibliothèque C ++ d'origine à Python
Comment appeler Python ou Julia à partir de Ruby (implémentation expérimentale)
Les débutants en python / tensorflow créent l'environnement jupyter + tensorflow et font Hello World
Appeler CPLEX depuis Python (DO cplex)
Publier de Python vers Slack
Flirter de PHP à Python