Forum: PC-Programmierung C++ Programm mit Python Ansprechen


von M. M. (blackcow)


Lesenswert?

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?

von Walter T. (nicolas)


Lesenswert?

DLL

von M. M. (blackcow)


Lesenswert?

Ah, na klar! Danke.

von Jemand (Gast)


Lesenswert?

Der direkte Weg über die Standardbibliothek:
https://docs.python.org/3/library/ctypes.html

Oder mit, äh, mehr Zeug :
http://www.swig.org/

von A. S. (rava)


Lesenswert?

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.

von Dumdi D. (dumdidum)


Lesenswert?

Jemand schrieb:
> Oder mit, äh, mehr Zeug :
> http://www.swig.org/

Swig ist sehr gut für solche Probleme.

von Bernd K. (prof7bit)


Lesenswert?

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
von imonbln (Gast)


Lesenswert?

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.

von Bernd K. (prof7bit)


Lesenswert?

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
von AbcAbc (Gast)


Lesenswert?


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
Noch kein Account? Hier anmelden.