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.
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.
macOS 10.13.6 Python 3.7 BoostPython 1.68.0
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.
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);
}
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)
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.
Versuchen Sie es auszuführen.
% python3 test.py
printHELLO!!
3
How are you?
Es scheint richtig gemacht zu werden.
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.
[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 ...".