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