Ich würde gerne ein Programm in C++ schreiben und mit Python ansprechen. Das Programm soll unter anderem ein Laborgerät über Ethernet steuern. Allerdings weiß ich nicht so recht nach was ich suchen soll. Idealerweise würde ich das Programm als Modul in Python importieren und dann nutzen. Jemand einen Tipp oder Stichwort/Idee?
Der direkte Weg über die Standardbibliothek: https://docs.python.org/3/library/ctypes.html Oder mit, äh, mehr Zeug : http://www.swig.org/
M. M. schrieb: > Ich würde gerne ein Programm in C++ schreiben und mit Python ansprechen. Dein Problem ist wohl eher, dass du die Bibliotheken noch nicht gefunden hast, die das machen, was du möchtest. Sauberer Python code ist meist schneller geschrieben als sauberer C++ code und das lernen lohnt sich.
Jemand schrieb: > Oder mit, äh, mehr Zeug : > http://www.swig.org/ Swig ist sehr gut für solche Probleme.
Also für kleinere Sachen würd ich cdecl verwenden, da kann man zwar die vorhandenen Header nicht automatisch verwursten sondern muss die Funktionssignaturen selber hinschreiben aber es ist ziemlich straightforward und einfach durchschaubar und ad-hoc mal schnell zu benutzen da der Standardinstallation schon vorhanden. Cdecl ist auch nützlich wenn man DLLs hat von denen keine C Header existieren (zum Beispiel weil sie in Passcal geschrieben wurden), wenn man die Signatur einer Funktion in der DLL kennt kann man sie ohne viel Federlesen einfach direkt von Python aus aufrufen, ohne erst irgendwelche Sachen kompilieren zu müssen die dann irgendwelche andere Sachen generieren die man dann alle dazu mitliefern muß. Aber wenn Du dutzende Header mit vielen verschachtelten typedefs und hunderten von Funktionen hast für Deine DLL dann wirds natürlich nicht mehr so spaßig das alles von Hand hinzuschreiben, dann würd ich auch was automatisches wie swig nehmen. Aber mal eben schnell nur 3 simple Funktionen aus ner DLL aufrufen, dafür ist cdecl wie geschaffen.
:
Bearbeitet durch User
M. M. schrieb: > Ich würde gerne ein Programm in C++ schreiben und mit Python > ansprechen. > Das Programm soll unter anderem ein Laborgerät über Ethernet steuern. Das Ansprechen, kann unterschiedliches bedeuten. Das könnte man als eine Art DLL lesen oder aber auch als Python ruft das Programm mit einer langen Latte an Parameter. Alternativ Könnte Python dein Programm auch über eine Interprozesskommunikation (zum Beispiel Ethernet) ansprechen. Vermutlich meinst du das mit der DLL (oder Sharedlib unter linux), aber denk auch mal über die anderen Möglichkeiten nach. ggf Kann Python über Ethernet auch direkt die Laborgeräte steuern. Netzwerk kann Python und so schwer ist die Sprache auch nicht.
Bernd K. schrieb: > Cdecl ctypes mein ich natürlich, freudscher Tippfehler. Hier ist ein Beispiel: http://www.auctoris.co.uk/2017/04/29/calling-c-classes-from-python-with-ctypes/
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.