C-Sprache zum Sehen und Erinnern Teil 3 Rufen Sie die C-Sprache aus Python auf (Argument) c = a + b

Erhält a + b als Rückgabewert von Python mit den Ganzzahlen a und b als Argumente.

capi.py


import myModule as capi
a,b=10,20
c=capi.Cal(a,b) #c=a+b
print(c)

Wenn du rennst

>python capi.py
30

capilib.c


#include <Python.h>
static PyObject* Cal(PyObject* self, PyObject* args){
    int a,b,c;
    if (!PyArg_ParseTuple(args, "ll",&a,&b)){
        return NULL;
    }
    c=a+b;
    return Py_BuildValue("l", c);
}
// Function Definition struct
static PyMethodDef myMethods[] = {
    { "Cal",Cal, METH_VARARGS, "Calc a+b"},
    { NULL }
};
static struct PyModuleDef myModule = {
    PyModuleDef_HEAD_INIT,"myModule","C API Module",-1,myMethods
};
PyMODINIT_FUNC PyInit_myModule(void){
    return PyModule_Create(&myModule);
}

** Aufmerksamkeitspunkt ist **

    int a,b,c;
    if (!PyArg_ParseTuple(args, "ll",&a,&b)){
        return NULL;
    }
    c=a+b;
    return Py_BuildValue("l", c);
}

setup.py


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

** Erstellen einer Bibliothek **

capi>python setup.py install
running install
running build
running build_ext
building 'myModule' extension
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MT -IC:\ProgramData\Anaconda3\include -IC:\ProgramData\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /Tccapilib.c /Fobuild\temp.win-amd64-3.7\Release\capilib.obj
capilib.c
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /nodefaultlib:libucrt.lib ucrt.lib /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\ProgramData\Anaconda3\libs /LIBPATH:C:\ProgramData\Anaconda3\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x64" /EXPORT:PyInit_myModule build\temp.win-amd64-3.7\Release\capilib.obj /OUT:build\lib.win-amd64-3.7\myModule.cp37-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.7\Release\myModule.cp37-win_amd64.lib
Bibliotheksaufbau\temp.win-amd64-3.7\Release\myModule.cp37-win_amd64.lib und object build\temp.win-amd64-3.7\Release\myModule.cp37-win_amd64.Erstellen von exp
Ich generiere Code.
Die Codegenerierung ist abgeschlossen.
running install_lib
copying build\lib.win-amd64-3.7\myModule.cp37-win_amd64.pyd -> C:\ProgramData\Anaconda3\Lib\site-packages
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

Recommended Posts

C-Sprache zum Sehen und Erinnern Teil 3 Rufen Sie die C-Sprache aus Python auf (Argument) c = a + b
C-Sprache zum Anzeigen und Erinnern Teil 2 Rufen Sie die C-Sprache aus der Python-Zeichenfolge (Argument) auf
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
C-Sprache zum Sehen und Erinnern Teil 1 Rufen Sie die C-Sprache aus Python auf (Hallo Welt)
Gehen Sie zur Sprache, um Teil 8 zu sehen und sich daran zu erinnern. Rufen Sie die GO-Sprache von Python aus auf
Gehen Sie in die Sprache, um Teil 7 C in der Sprache GO zu sehen und sich daran zu erinnern
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
Rufen Sie die c-Sprache von Python aus auf (python.h)
Rufen Sie C-Sprachfunktionen von Python auf, um mehrdimensionale Arrays auszutauschen
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
Verwenden Sie eine Skriptsprache für ein komfortables C ++ - Leben - OpenCV-Port Python zu C ++ -
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen einer einfachen Funktion Teil ➀
Rufen Sie Matlab von Python zur Optimierung auf
Python a + = b und a = a + b sind unterschiedlich
Rufen Sie C von Python mit DragonFFI auf
ABC127 A, B, C Erklärung (Python)
Rufen Sie popcount von Ruby / Python / C # auf
Einführung in Protobuf-c (C-Sprache ⇔ Python)
ABC128 A, B, C Kommentar (Python)
[Python] gibt A [oder / und] B zurück
ABC126 A, B, C Erklärung (Python)
Python, um von einer anderen Sprache zu wechseln
Rufen Sie C / C ++ von Python auf dem Mac auf
[Python] Drücken Sie Keras von TensorFlow und TensorFlow von c ++, um die Ausführung zu beschleunigen.
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
[C-Sprache] So erstellen, vermeiden und erstellen Sie einen Zombie-Prozess
Rufen Sie dlm von Python aus auf, um ein zeitvariables Koeffizientenregressionsmodell auszuführen
Übergeben Sie die Liste von Python an C ++ als Referenz in pybind11
Rufen Sie mit ctypes Ihre eigene gemeinsam genutzte Bibliothek in C-Sprache von Python aus auf
[Es ist noch nicht zu spät, Python ab 2020 zu lernen] Teil 3 Python Language Basic (1)
Löse ABC175 A, B, C mit Python
Von Python bis zur Verwendung von MeCab (und CaboCha)
Python> Schlüsselwortargumente> hoge (** {'a': 1, 'b': 2, 'c': 3})
Migration von Python2 zu Python3 (Python2 wird als virtuelle Umgebung neu erstellt und existiert gleichzeitig)
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
Portieren und Ändern des Doublet-Solvers von Python2 auf Python3.
Socket-Kommunikation in C-Sprache und Python
Generieren Sie mit Python eine C-Sprache aus dem S-Ausdruck
Aufrufbefehle von Python (Windows Edition)
Versuchen Sie, das Programm "FORTRAN77 Numerical Computing Programming" auf C und Python zu portieren (Teil 1).
Versuchen Sie, das Programm "FORTRAN77 Numerical Computing Programming" auf C und Python zu portieren (Teil 3).
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen von Klassen Teil ➀
Versuchen Sie, das Programm "FORTRAN77 Numerical Computing Programming" auf C und Python zu portieren (Teil 2).
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen von Klassen Teil ➁
Senden Sie eine Nachricht von Slack an einen Python-Server
Führen Sie Python-Skripte in C # -GUI-Anwendungen aus
Bearbeiten Sie Excel in Python, um eine Pivot-Tabelle zu erstellen
So generieren Sie eine Sequenz in Python und C ++
Erstellen Sie ein C-Array aus einer Python> Excel-Tabelle
Portierte einen naiven Homebrew-Sprachcompiler nach Python
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
So generieren Sie ein Python-Objekt aus JSON
Python-Memo- "wenn nicht A und B" war "wenn (nicht A) und B"
Liste des zu verschiebenden und zu merkenden Python-Codes