C++ Klasse in Python via Boost
Verfasst: Mittwoch 28. März 2012, 07:52
Hallo zusammen,
Zusammen mit einem Bekannten wollen wir gerne ein Python program schreiben, welches eine C/C++-Klasse nutzt.
Die Ueberlegung war boost:python zu nutzen.
Wir haben unsere C++-Klasse dementstprechend erweitert, wobei die Klasse jumoSubClientHandler von der Klasse subClientHandler erbt.
die Erweiterung um die Klasse in Python zu nutzen sieht wie folgt aus:
Zurzwit haben wir "nur " die Funktion printHelp und den Constructor verknuepft um es zu testen.
Leider scheint das aus irgendeinem Grund nicht zu funktionieren....
Das kompilen klappt und ich erzeuge die passende *.so Datei.
Wenn ich jedoch in Python import machen will klappt das nicht:
Das lesen des Tutorials auf der boost HP hat mich bisher nicht weiter gebracht.
Hat jemand eine erklaerung dafuer?
Viele Gruesse
Felix
Zusammen mit einem Bekannten wollen wir gerne ein Python program schreiben, welches eine C/C++-Klasse nutzt.
Die Ueberlegung war boost:python zu nutzen.
Wir haben unsere C++-Klasse dementstprechend erweitert, wobei die Klasse jumoSubClientHandler von der Klasse subClientHandler erbt.
Code: Alles auswählen
class jumoSubClientHandler: public subClientHandler{
//todo constructor
public:
jumoSubClientHandler(std::string clientName="jumoClient");
private:
jumoInterface jumo;
public:
void printHelp();
private:
int extractProgramNumber(std::string data);
public:
bool analyseData(packetData_t data);
};
Code: Alles auswählen
using namespace boost::python;
// Boost.python definitions to expose classes to Python
BOOST_PYTHON_MODULE(jumoSubClientHandler) {
// class_<subClientHandler>("subClientHandler",init<std::string>())
// ;
class_<jumoSubClientHandler> ("jumoSubClientHandler",init<std::string>())
.def("printHelp", &jumoSubClientHandler::printHelp())
;
// Line below is necessary to expose the vector "nodes" to Python
// and have it function as expected in Python
}
Leider scheint das aus irgendeinem Grund nicht zu funktionieren....
Das kompilen klappt und ich erzeuge die passende *.so Datei.
Wenn ich jedoch in Python import machen will klappt das nicht:
Code: Alles auswählen
>>> import jumoSubClientHandler
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dynamic module does not define init function (initjumoSubClientHandler)
>>>
Hat jemand eine erklaerung dafuer?
Viele Gruesse
Felix