Rufen Sie C / C ++ von Python auf dem Mac auf

Dies ist der erste Beitrag. Ich habe kürzlich darum gebeten, Python zu berühren, aber es ist langsam. Aber als ich es in Python schreiben musste, fragte ich: "Ich sollte es C nennen !?" Aber es hat nicht so funktioniert wie in den Artikeln anderer. Ich habe mich gefragt, ob die Referenz oder etwas nicht stimmt, aber ich habe eine Notiz gemacht, weil sie sich bewegt hat, als ich sie gewaltsam verschoben habe.

Überblick

Es scheint, dass Sie die mit dem Namen ** Boost.Python ** verwenden sollten. Ich konnte die Bibliothek nicht durchsuchen, also habe ich sie alle in einem Verzeichnis abgelegt und verschoben.

Umgebung

macOS 10.13.6 Python 3.7 BoostPython 1.68.0

Bereiten Sie vor, was Sie brauchen

Ich habe ein Verzeichnis * vorbereitet, um dieses Programm auszuführen. Ich denke, es kann überall sein, aber ich habe ~ / Python / BoostPythonTest / gewählt. Bereiten Sie hier die folgenden Punkte vor.

libboost_python37.dylib Installieren Sie Boost.Python unten. [^ 1]

% brew install boost-python3

Nach der Installation sollten Sie / usr / local / Cellar / boost-python3 / 1.68.0 / lib / libboost_python37.dylib haben und es in das * laufende Verzeichnis * kopieren.

libpython3.7.dylib Habe Python installiert. [^ 1]

% brew install python3

Kopieren Sie / usr / local / Cellar / python / 3.7.2 / Frameworks / Python.framework / Versions / 3.7 / Python in das * laufende Verzeichnis * und benennen Sie es in libpython3.7.dylib um.

C / C ++ - Quelle

Ich habe eine Quelle namens "hello.cpp" zum Testen vorbereitet.

hello.cpp


#include <boost/python.hpp>
#include <stdio.h>

char greet(int x){
    printf("printHELLO!!\n");
    return '0' + x + 1;
}

char const* fine(){
    return "How are you?";
}

BOOST_PYTHON_MODULE(hello){
  using namespace boost::python;
    def("greet", greet);
    def("fine", fine);
}

Python-Quelle

Ich habe eine Quelle namens test.py zum Testen vorbereitet.

test.py


import hello
x = hello.greet(2)
print(x)
y = hello.file()
print(y)

kompilieren

Sie sollten in der Lage sein zu kompilieren mit: Suchen Sie einfach nach den Dateien im * laufenden Verzeichnis *.

% g++ -fPIC -Wall -O2 -shared -o hello.so hello.cpp libboost_python37.dylib libpython3.7.dylib

hello.so wird im * Ausführungsverzeichnis * erstellt.

Lauf

Versuchen Sie es auszuführen.

% python3 test.py
printHELLO!!
3
How are you?

Es scheint richtig gemacht zu werden.

Zusammenfassung

Es war eine Art Brute-Force-Methode, alles in ein Verzeichnis zu stellen und zu verschieben, aber es hat vorerst funktioniert, also lass es uns tun.

Ich habe versucht, es unter Ubuntu auszuführen, konnte es aber nicht. Ich benutze dylib, also scheint es nutzlos zu sein, es sei denn, es ist ein Mac.

Referenz

[1] Wickle c / c ++ so ein, dass es in Python verwendet werden kann https://www.quark.kj.yamagata-u.ac.jp/~hiroki/python/?id=19

[2] Von der Boost-Installation bis zur Ausführung (boost :: python). http://nonbiri-tereka.hatenablog.com/entry/2014/02/01/004547

[^ 1]: Wenn Sie bei der Verwendung von "Brew" einen Berechtigungsfehler erhalten, machen Sie "Sudo Brew ...".

Recommended Posts

Rufen Sie C / C ++ von Python auf dem Mac auf
Rufen Sie C von Python mit DragonFFI auf
Rufen Sie popcount von Ruby / Python / C # auf
Python auf Mac
Rufen Sie die c-Sprache von Python aus auf (python.h)
Aktualisieren Sie Mac Python von 2 auf 3
Installieren Sie Python auf dem Mac
Installieren von Python 3 in einer Mac-Umgebung
Installieren Sie Python 3.4 auf einem Mac
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
Rufen Sie CPLEX von Python aus auf (DO cplex)
Installieren Sie pygame auf python3.4 auf dem Mac
Umgang mit Python auf Mac
Aktualisieren Sie die Python, die Sie auf Ihrem Mac hatten, auf 3.7-> 3.8
Installieren Sie pandas 0.14 auf python3.4 [auf Mac]
Hinweise zur Installation von Python auf Ihrem Mac
Einstellungen zum Generieren animierter GIFs aus Python auf dem Mac
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
Rufen Sie Matlab von Python zur Optimierung auf
Rufen Sie C-Sprachfunktionen von Python auf, um mehrdimensionale Arrays auszutauschen
Erstellen einer Python-Umgebung auf einem Mac
Hinweise zur Verwendung von MeCab aus Python
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
Konstruktionsnotiz für die Python-Umgebung auf dem Mac
Installieren Sie Python 3.7 Anaconda auf dem MAC, aber Python 2
Rufen Sie den von Cython aus C / C ++ (Mac-Version) generierten Code auf.
Installieren Sie python3 auf einem Mac (El Capitan)
Tipps zum Aufrufen von Python von C.
Führen Sie Python-Code über die C # -GUI aus
Erstellen einer Umgebung für Python3.8 auf einem Mac
Führen Sie Python-Skripte synchron von C # aus
Hinweise zum Zugriff auf dashDB über Python
Rufen Sie Python von Nim mit Nimpy auf
Wenn die Installation von Python 3.5.0 auf einem Mac fehlschlägt
Schritte zum Installieren von python3 auf einem Mac
So erstellen Sie eine Python-Umgebung aus Pyenv in einer Mac-Umgebung (El Capitan)
Installieren Sie mecab auf dem gemeinsam genutzten Sakura-Server und rufen Sie es von Python aus auf
Installieren Sie lp_solve unter Mac OSX und rufen Sie es mit Python auf.
Rufen Sie mit ctypes Ihre eigene gemeinsam genutzte Bibliothek in C-Sprache von Python aus auf
Führen Sie Python-Code unter C ++ aus (mit Boost.Python).
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
Verfolgen Sie aktive Anwendungen auf einem Mac mit Python
[C] [Python] Lesen mit AquesTalk unter Linux
So löschen Sie Python 2.x auf einem Mac.
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
Hinweise zum Erstellen von Python und Pyenv auf dem Mac
Erstellen Sie eine Python-Umgebung mit Anaconda auf einem Mac
Generieren Sie mit Python eine C-Sprache aus dem S-Ausdruck
Aufrufbefehle von Python (Windows Edition)
Führen Sie Python in C ++ unter Visual Studio 2017 aus
C-Sprache zum Anzeigen und Erinnern Teil 2 Rufen Sie die C-Sprache aus der Python-Zeichenfolge (Argument) auf
Python unter Windows
Twitter mit Python3
SQL zu SQL
C-Sprache zum Sehen und Erinnern Teil 1 Rufen Sie die C-Sprache aus Python auf (Hallo Welt)
Python C ++ Notizen
Python, openFrameworks (c ++)
MeCab von Python