Boost installieren Es gibt viele Möglichkeiten, C/C++ aus Python aufzurufen. Dieser Artikel verwendet boost.python. Da in der späteren Phase viel Entwicklungsarbeit an Boost anfällt, wird Boost zusammen installiert. Die Boost-Bibliothek ist zur Verwendung in zwei Teile unterteilt. Einer besteht darin, die entsprechende Header-Datei direkt zu verwenden, und der andere darin, die entsprechende Bibliothek zu kompilieren und zu installieren, bevor sie verwendet werden kann. Informationen zu spezifischen Installationsmethoden finden Sie unter: https://www.jb51.net/article/150380.htm Hier verwenden wir: sudo apt-get installiere libboost-all-dev Server Nach Serialisierung senden main.cpp: #include <iostream> #include "libUO.h" int main() { UO_C_Socket t; // t.StartSocketServer("",4121); boost::thread t1(boost::bind(&UO_C_Socket::StartSocketServer,&t,"",4121)); schlaf(2); // boost::thread t2(boost::bind(&UO_C_Socket::StartSocketClient,&t,"127.0.0.1",4121)); // t2.join(); t1.join(); gebe 0 zurück; } Kunde Der Client implementiert grundlegende Funktionen in UO_BaseFun.h, kapselt sie und exportiert sie über boost_python. Beachten Sie, dass der Name in BOOST_PYTHON_MODULE mit der vom abschließenden Make generierten So-Datei übereinstimmen muss. Gleicher Name, sonst kommt es zu einem Fehler, der Fehlername wird vergessen UO_libdll_py_wrap.cpp: #include <boost/python.hpp> #include <boost/python/module.hpp> #include <boost/python/def.hpp> #include "UO_BaseFun.h" BOOST_PYTHON_MODULE(UO_BaseFun) //Python-Modul { // boost::python::class_<UO_C_Socket,boost::noncopyable>("UO_C_Socket") boost::python::class_<UO_C_Socket>("UO_C_Socket") .def("StartSocketClient",&UO_C_Socket::StartSocketClient) // .def("getname",&student::getname) // .def("setage",&student::setage) // .def("getage",&student::getage) // .add_property("name",&student::getname,&student::setname) // .add_property("Alter",&Student::getage,&Student::setage) ; } Achten Sie besonders auf den Unterschied zwischen Kompilierung und Verbindung im Makefile. Auftretende undefinierte Symbolfehler erfordern das Hinzufügen dynamischer Linkbibliotheken wie -lboost_filesystem. Ein Fehler tritt auf: pyconfig.h kann nicht gefunden werden und muss eingebunden werden -I/usr/include/python2.7. Nach Abschluss von make wird die Datei UO_BaseFun.so generiert Makefile: UO_BaseFun.so:UO_libdll_py_wrap.o g++ UO_libdll_py_wrap.o -o UO_BaseFun.so -shared -fPIC -L/usr/lib/x86_64-linux-gnu\ -lboost_filesystem -lboost_thread -lboost_serialization -lboost_python -lboost_system UO_STR.o: g++ -c UO_STR.h -o UO_STR.o -I/usr/include/boost \ # -lboost_serialisierung UO_BaseFun.o:UO_STR.o g++ -c UO_BaseFun.h -o UO_BaseFun.o -I/usr/include/boost \ # -lboost_system -lboost_filesystem -lboost_thread -lboost_serialization UO_libdll_py_wrap.o:UO_BaseFun.o g++ -c UO_libdll_py_wrap.cpp -o UO_libdll_py_wrap.o -fPIC -I/usr/include/python2.7 # -lboost_serialisierung sauber: rm -rf UO_STR.o O_libdll_py_wrap.o UO_BaseFun.o rm -rf UO_BaseFun.so verifizieren UO_StoreSystem_py.py: importiere UO_BaseFun test = UO_BaseFun.UO_C_Socket() test.StartSocketClient("127.0.0.1",4121) Zusammenfassen: Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Wie InnoDB die Serialisierungsisolationsebene implementiert
>>: Schritte zum Kapseln der Karussellkomponente in vue3.0
Inhaltsverzeichnis 1. Prototyp 2. Prototypenkette...
Hinweis: sg11 Unser Unternehmen unterstützt nur d...
Inhaltsverzeichnis Erste Schritte mit MySQL MySQL...
Er gibt beispielsweise ein: XML/HTML Code div#Seit...
1. Konfiguration Die ersten beiden sind standardm...
Ich habe gelernt, wie man https bekommt. Kürzlich...
In diesem Artikel wird eine einheitliche Bewegung...
In den letzten Tagen habe ich gelernt, wie man Sp...
# Die folgenden Beispiele gelten für die x64-Bit-...
In letzter Zeit möchte ich regelmäßig wichtige in...
1. Position : fest Gesperrte Position (relativ zu...
Experimentelle Umgebung • Eine minimal installier...
Vor Kurzem hat das Unternehmen die Anforderung ge...
Schritt 1: Signieren Sie ein vertrauenswürdiges S...
Ursache des Fehlers Als ich heute ein Karussell s...