Présentation de l'utilisation de Cython pour appeler Python à partir de C / C ++.
Il est courant d'écrire un fossé extérieur en Python et d'appeler la partie principale C / C ++ pour accélérer. Cette fois, c'est ** inverse **. Au contraire, il n'y a pas grand chose d'autre que le document officiel ... Veuillez me faire savoir si vous en avez. OTL.
(Ajout: j'ai écrit la version Mac.)
Visual C ++ -> Sélectionnez un projet vide-> Appuyez sur le bouton OK pour le moment. Vous pouvez maintenant créer un projet vide. La solution et le nom du premier projet créé est Project1.
Ajoutez un fichier C ++ vide avec Ctrl + Maj + A. Le nom par défaut est Source.cpp, mais utilisez-le tel quel. Nous écrirons le code dans Source.cpp plus tard. Pour l'instant, laissez ce champ vide.
Veuillez noter qu'à partir de maintenant, cela dépendra de votre propre environnement.
Je pense que les lecteurs sont familiers avec Python, vous savez donc quel Python vous utilisez. Mais vérifions.
Ouvrez une invite de commande
> where python
Est exécuté. Dans mon cas, c'était C: \ ProgramData \ Miniconda3 \ python.exe
.
Allez dans C: \ ProgramData \ Miniconda3
.
Dans l'image ci-dessous, ʻinclude et
libs` sont sélectionnés.
Notez le chemin de ce répertoire car il sera utilisé ensuite.
Ajoutez le chemin complet de include noté ci-dessus à Propriétés> Répertoire VC ++> Répertoire d'inclusion.
Dans mon cas C: \ ProgramData \ Miniconda3 \ include
est.
Ajoutez le chemin complet des bibliothèques indiquées ci-dessus à Propriétés> Répertoire VC ++> Répertoire d'inclusion.
Dans mon cas C: \ ProgramData \ Miniconda3 \ libs
est.
Faisons ressembler le cadre rouge entouré par la figure ci-dessous. Définissez également la plate-forme sur x64.
Obtenez le programme d'installation sur la page d'accueil officielle de Python et lancez le programme d'installation. Cliquez sur Personnaliser l'installation, puis sur le bouton Suivant.
Vérifiez les binaires de débogage de téléchargement, les symboles de débogage. Si vous n'utilisez pas ce Python comme principal, vous n'avez pas besoin d'ajouter PATH.
Écrivez ce qui suit dans Source.cpp
source.cpp
#include<Python.h>
int main() {
Py_Initialize();
printf("Hello");
Py_Finalize();
return 0;
}
Si vous pouvez construire en mode version, c'est OK pour le moment. Si vous vous fâchez que Python.h soit manquant, l'ajout du répertoire d'inclusion a échoué. Calmons-nous et remettons-le.
Et en mode débogage, vous avez besoin d'une DLL portant le même nom que python35_d.lib, vous devez donc l'obtenir.
Vous pouvez l'obtenir en démarrant le programme d'installation de Python 3 à partir de la page officielle de Python en vous référant au débordement de pile ci-dessus et en sélectionnant "télécharger les binaires de débogage" comme option. Trouvons-le.
Créez ce qui suit dans le même calque que Source.cpp créé ci-dessus.
Chaque code est le suivant.
setup.py
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("cytest.pyx"))
cytest.pyx
from libc.stdio cimport printf
cdef public struct Point:
double x
double y
cdef public Point DoubleCoord(Point p):
cdef Point q
q.x=2*p.x
q.y=2*q.x
printf("q.x=%f, q.y=%f\n",q.x,q.y)
return q
Pour le moment, j'ai créé une fonction avec Cython qui définit la structure des sommets et double les coordonnées.
setup Ouvrez une invite de commande et créez votre code Cython.
> python setup.py build_ext --inplace
Généré à ce moment Ajoutez respectivement cytest.c cytest.h au fichier source et au fichier d'en-tête de Visual Studio.
Source.cpp
#include<Python.h>
#include<stdio.h>
#include "cytest.h"
int main() {
Py_Initialize();
struct Point p;
p.x = 3.5;
p.y = 7.0;
struct Point q = DoubleCoord(p);
printf("q.x=%f,q.y=%f", q.x, q.y);
Py_Finalize();
}
Par conséquent, jusqu'à présent, cela devrait être comme indiqué dans la figure ci-dessous sur Visual Studio.
Une fois exécuté, ce sera comme suit.
C'est dur ... Pour référence
Je vais mentionner.
Recommended Posts