Archiv verlassen und diese Seite im Standarddesign anzeigen : Wrapper: python zu c oder c++
Flightbase
11-03-2005, 01:45
HAllo!
genau sowas suche ich... ich hab hier python source - und dieser soll am ende c oder c++ code sein. falls es kein tool geben sollte, würde auch python -> java -> c/c++ gehen.
heissen dank, für jeden tipp!
greets, Nik
SeeksTheMoon
13-03-2005, 17:33
www.swig.org
peschmae
13-03-2005, 18:12
Ist Swig nicht gerade für umgekehrt?
MfG Peschmä
Mir ist keine solche Lösung bekannt. Allerdings sollte es zumindest für kleinere Python-Projekte kein Problem darstellen so etwas selbst zu entwickeln.
Zu diesem Zweck müsstest du lediglich ein kleines C-prog schreiben, dass Python embedded (wie auch immer die korrekte deutsche Übersetzung hierzu sein mag) und dann den gewünschten Python code übergeben bzw. direkt im Quellcode einbetten (embedded hört sich dennoch besser an).
Ein paar URL's in denen die Ansätze zu einer möglichen Umsetzung erläutert sind;
http://python.fyxm.net/doc/2.2.3/ext/ext.html
http://www.python.org/doc/1.5.2p2/api/api.html
http://davidf.sjsoft.com/mirrors/mcmillan-inc/embed.html
Allerdings ist das Resultat dann auch nicht viel anders, als wenn du "python.exe mypythonfile.py" in eine Batchdatei schiebst und diese dann ausführst :p
Flightbase
14-03-2005, 11:47
Mir ist keine solche Lösung bekannt. Allerdings sollte es zumindest für kleinere Python-Projekte kein Problem darstellen so etwas selbst zu entwickeln.
Zu diesem Zweck müsstest du lediglich ein kleines C-prog schreiben, dass Python embedded (wie auch immer die korrekte deutsche Übersetzung hierzu sein mag) und dann den gewünschten Python code übergeben bzw. direkt im Quellcode einbetten (embedded hört sich dennoch besser an).
Ein paar URL's in denen die Ansätze zu einer möglichen Umsetzung erläutert sind;
http://python.fyxm.net/doc/2.2.3/ext/ext.html
http://www.python.org/doc/1.5.2p2/api/api.html
http://davidf.sjsoft.com/mirrors/mcmillan-inc/embed.html
Allerdings ist das Resultat dann auch nicht viel anders, als wenn du "python.exe mypythonfile.py" in eine Batchdatei schiebst und diese dann ausführst :p
hallo!
genau das hab ich momentan. das problem ist nur, dass ich den python code unbedingt scramblen muß. dieses thema ist ca. 4 millionen mal durchdiskutiert worden - und es scheint keine lösung für ein in c "eingebettetes" python programm zu geben.
deshalb ist halt die idee den python code in c oder c++ umzuwandeln, damit erporbte und funktionierende lösungen greifen.
greets, Nik
ein in c "eingebettetes" python programm
[...]
deshalb ist halt die idee den python code in c oder c++ umzuwandeln
Natürlich geht das einbetten von Python-code in C/C++. Siehe dazu das Beispiel auf http://python.fyxm.net/doc/2.2.3/ext/high-level-embedding.html
Das Ganze funktioniert sogar sehr gut. Mit http://cxx.sourceforge.net/ und http://boost.org/libs/python/doc/ existieren sogar zwei sehr mächtige Möglichkeiten, nicht direkt mit dem Python C API arbeiten zu müssen (für den Fall, dass der Bedarf besteht nicht einfach lediglich Python-code auszuführen, sondern in C/C++ mit Python zu arbeiten und umgekehrt). Ein so eingebetteter Python-Code ist somit Bestandteil deiner C/C++-Anwendung und der Python-code string/char* wird somit einkompiliert (und kann natürlich vorher auch gescrambelt werden und dann kurz vor Übergabe an z.B. PyRun "entschlüsselt" werden um ein disassemblieren zumindest zu erschweren).
Falls du Qt einsetzt, hast du mit mir genau den richtigen Ansprechpartner gefunden, da ich mich seit gut 1/2 Jahr mit der Thematik beschäftige (siehe http://www.dipe.org/kross/, QVariant, signals/slots/Q_PROPERTY's/etc. sind bereits gewrappt, LGPL) und mich in Python verliebt habe. Bei Fragen, also einfach fragen :D
p.s. Der beste Weg wäre natürlich den relevanten Python-Code in ein eigenes Python C/C++ Modul zu verfrachten und dieses dann über import in einer *.py-Datei zu nutzen. Zumindest wird es so von der Python-Machern empfohlen; better extend as embed oder so.
Flightbase
14-03-2005, 15:52
uhm. nochmal. es ist bereits eingebettet. das war aber nicht gut, da wir den code scramblen müssen. das gibt python nicht her. deshalb wollen wir von python weg und den python code zu c/c++ machen.
dafür suche ich ein tool. am ende soll also alles natives c/c++ sein.
greets, Nik
Es wäre schön, wenn du mir die Bedeutugn des Wortes "gescrambelt" etwas genauer erläuterst, da ich das falsch zu verstehen scheine.
Bei der vorher erläuterten Lösung ist übrigens am Ende _alles_ C/C++ ... Wenn es dir darum geht, den Python code los zu werden und am Ende kein Python (nicht mal libpython) zu nutzen, dann sehe ich leider keinen anderen Weg, als den Python-Code händisch nach C/C++ zu transferieren...
/edit
Vielleicht; http://effbot.org/zone/python-compile.htm
RapidMax
14-03-2005, 22:25
Es wäre schön, wenn du mir die Bedeutugn des Wortes "gescrambelt" etwas genauer erläuterst, da ich das falsch zu verstehen scheine.
Das hört sich nach "Hiding the closed source" an ;)
Gruss, Andy
Das hört sich nach "Hiding the closed source" an ;)
Danke. Genau so hatte ich es verstanden und so war eigentlich auch Beitrag #6 ausgelegt. In dem erwähnten Beispiel lässt sich PyRun_SimpleString() ja beliebiger char* übergeben und dieser kann natürlich beliebig im Sourcecode hinterlegt werden, halt auch "gescrambelt". Ein "descrambling" würde dann den betreffenden Code kurz vor Ausführung wieder zurückverwandeln. Einen wirklichen Schutz vor auslesen stellt das natürlich nicht dar.
Könnt ihr nicht einfach den Bytecode (pyc oder sogar pyo) einbetten anstatt des Quelltextes?
fs111
Flightbase
16-03-2005, 10:56
Könnt ihr nicht einfach den Bytecode (pyc oder sogar pyo) einbetten anstatt des Quelltextes?
fs111
wir haben den bytecode eingebettet.
wir entwickeln jetzt eine eigene lösung, da ein neuschreiben nicht in frage kommt.
vielen dank für eure hilfe!
greets, Nik
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.