Ich schaute auf here, um zu sehen, wie C++ zu Python verfügbar machen. Ich habe Python-Deep-Learning-Code gebaut, der Boost-Python verwendet, um C++ und Python zu verbinden, und es läuft ok, also hat mein System Dinge für boost-python alread setup. Hier ist mein Hallo.cpp Code (wo ich WorldC und WorldP verwendet, um deutlich zu zeigen, die Verwendung von C++ und Python-Klassennamen in der Deklaration. Ich weiß nicht, warum die ursprüngliche Webseite denselben Klassennamen verwendet World
, um Verwirrung zu verursachen Anfänger.)Aussetzen der C++ - Klasse in Python (nur ET_DYN und ET_EXEC können geladen werden)
#include <boost/python.hpp>
using namespace boost::python;
struct WorldC
{
void set(std::string msg) { this->msg = msg; }
std::string greet() { return msg; }
std::string msg;
};
BOOST_PYTHON_MODULE(hello)
{
class_<WorldC>("WorldP")
.def("greet", &WorldC::greet)
.def("set", &WorldC::set)
;
}
und das ist, wie ich hello.so
g++ -shared -c -o hello.so -fPIC hello.cpp -lboostpython -lpython2.7 -I/usr/local/include/python2.7
gemacht Wenn ich Import hallo in python laufen, es mir diesen Fehler gibt.
>>> import hello
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: ./hello.so: only ET_DYN and ET_EXEC can be loaded
Kann mir jemand sagen, was los ist?
(ich bin unter meinem Home-Verzeichnis für Python-Umgebung mit anaconda2, aber da Code meines tiefer Lernens mit Boost-Python ok baut, soll es in meinem System-Verzeichnis kein Problem mit boost/python.hpp sein)