Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Wrapper: python zu c oder c++

  1. #1
    Registrierter Benutzer Avatar von Flightbase
    Registriert seit
    23.04.2002
    Ort
    Uelzen
    Beiträge
    27

    Wrapper: python zu c oder c++

    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

  2. #2
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    I haven't lost my mind - It's somewhere on a backup-disc

  3. #3
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ist Swig nicht gerade für umgekehrt?

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    68
    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/mcm...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
    Geändert von dipesh (13-03-2005 um 23:04 Uhr)
    s/(win|dos)/linux/g; #just another fixed pain in the (gl)ass

  5. #5
    Registrierter Benutzer Avatar von Flightbase
    Registriert seit
    23.04.2002
    Ort
    Uelzen
    Beiträge
    27
    Zitat Zitat von dipesh
    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/mcm...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
    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

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    68
    Zitat Zitat von Flightbase
    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...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

    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.
    Geändert von dipesh (14-03-2005 um 14:44 Uhr)
    s/(win|dos)/linux/g; #just another fixed pain in the (gl)ass

  7. #7
    Registrierter Benutzer Avatar von Flightbase
    Registriert seit
    23.04.2002
    Ort
    Uelzen
    Beiträge
    27
    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

  8. #8
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    68
    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
    Geändert von dipesh (14-03-2005 um 15:02 Uhr)
    s/(win|dos)/linux/g; #just another fixed pain in the (gl)ass

  9. #9
    Registrierter Benutzer
    Registriert seit
    05.09.2002
    Ort
    Neuhausen
    Beiträge
    320
    Zitat Zitat von dipesh
    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

  10. #10
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    68
    Zitat Zitat von RapidMax
    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.
    s/(win|dos)/linux/g; #just another fixed pain in the (gl)ass

  11. #11
    Registrierter Benutzer Avatar von fs111
    Registriert seit
    23.03.2002
    Beiträge
    594
    Könnt ihr nicht einfach den Bytecode (pyc oder sogar pyo) einbetten anstatt des Quelltextes?

    fs111
    ....::::Mein Blag::::....

  12. #12
    Registrierter Benutzer Avatar von Flightbase
    Registriert seit
    23.04.2002
    Ort
    Uelzen
    Beiträge
    27
    Zitat Zitat von fs111
    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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •