Python in C++ Windows Forms

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Christi258
User
Beiträge: 8
Registriert: Samstag 11. Juni 2011, 12:30

Servus Leute,
Ich möchte in einem C/C++ Windows Forms- Projekt einen Python Skript ausführen. Dabei habe ich aber noch eine Menge Probleme:
Könntet ihr mir sagen wie ich "Das Programm gegen die Python API linke"?
Ist dieser Python-Skript in C richtig?:

Code: Alles auswählen

const char *Schreiber =
"fobj = open("sauf.sav", "a")\n"
"fobj.write("\n" + str(GetraenkH) + "a" + str(GetraenkC) + "b" + str(GetraenkA) + "c" + str(GetraenkP))\n"
"fobj.close()\n";
Schonmal danke für eure Antworten
Zuletzt geändert von Anonymous am Samstag 12. November 2011, 19:32, insgesamt 1-mal geändert.
Grund: Quelltext in C-Code-Tags gesetzt.
BlackJack

@Christi258: Wenn man sich das mit Syntaxhighlighting anschaut ist das offenbar kein gültiges C oder C++.

Ansonsten könntest Du Dir das `obj` bei `fobj` sparen, denn in Python ist *alles* was man an einen Namen binden kann ein Objekt. Das noch einmal im Namen zu erwähnen hat also keinen Mehrwert für den Leser.

Und die `str()`-Aufrufe sind untypisch. Man würde eher Zeichenkettenformatierung mittels ``%``-Operator oder `format()`-Methode auf Zeichenketten machen.

Wenn das ausgeführt wird, müssen natürlich die `Getraenk*`-Namen an Objekte gebunden sein. Hier ist die Namensgebung untypisch es sei denn das sind tatsächlich Klassen.
Christi258
User
Beiträge: 8
Registriert: Samstag 11. Juni 2011, 12:30

@BlackJack Danke für deine schnelle Antwort, aber mal abgesehen wie ich meine Variablen benenne und der Rest was dir nicht so gefällt( str();fobj), könntest du meine relevanten Fragen beantworten?
Christi258 hat geschrieben: Könntet ihr mir sagen wie ich "Das Programm gegen die Python API linke"?
Zur Erläuterung: Ich habe das Python 3 Buch bei Galileo Computing gekauft und dort ist ein Beispiel für ein Code:

Code: Alles auswählen

#include <Python.h>

const char *programm =
"import random\n"
"print('Guten Tag, die Zahl ist:', random.randint(0, 100))\n"
"print('Das war ... Python')\n";

int main(int argc, char *argv[])
    {
    Py_Initialize();
    PyRun_SimpleString(programm);
    Py_Finalize();
    }
Dieses Consolen-Programm funktioniert bei mir nicht deshalb die Frage.
Hoffe du verstehst mich jetzt.
BlackJack

@Christi258: Was heisst „funktioniert nicht“ denn konkret?
Christi258
User
Beiträge: 8
Registriert: Samstag 11. Juni 2011, 12:30

Sorry hab ich vergessen,
Es kommt die folgende Fehlermeldung:

fatal error LNK1104: Datei "python30_d.lib" kann nicht geöffnet werden.
BlackJack

@Christi258: Hast Du die Bibliothek denn installiert? Das ist AFAIK die Bibliothek die man braucht wenn man einen Debug-Buiild macht. Du könntest alternativ also auch versuchen einen Release-Build zu machen.
Christi258
User
Beiträge: 8
Registriert: Samstag 11. Juni 2011, 12:30

Ich weiß nicht ob ich dir genau folgen konnte.
Wie Installiert man denn eine Bibliothek?
Und wenn ich ein Release-Build machen würde (hab ich) dann müsste es auch diese AFAIK Bibliothek gehen?
deets

:roll: Bist du wirklich, dass du einer solchen Aufgabe gewachsen bist? Du scheinst noch nicht mal die grundlegensten Begriffe der Entwicklung unter C++ zu beherrschen.

AFAIK ist keine Bibliothek - sondern ein Acronym, das fuer 'As far as I know' steht, und damit sagt BlackJack nur, dass er vermutet, dass die Python-Bibliothek die du versuchst zu linken die Debug-Variante von Python ist - weil dein Projekt im Debug-Modus gebaut wird. Also musst du entweder eine Debug-Variante von Python installieren, oder eben dein Projekt im Release-Modus bauen (was bei deinen Kuensten das ganze noch ein bisschen schwieriger macht... denn dann kannst du kein C++ debuggen)

Das ist aber alles absolute Grundlagen VisualStudio/C++ Entwicklung.
Christi258
User
Beiträge: 8
Registriert: Samstag 11. Juni 2011, 12:30

Wo gibt es diese Debug-Variante?
BlackJack

@Christi258: Dafür müsstest Du wahrscheinlich Python selbst kompilieren. Im Debug-Modus.
Christi258
User
Beiträge: 8
Registriert: Samstag 11. Juni 2011, 12:30

Es mag ja sein, dass ihr Recht habt, aber in diesem Buch steht nunmal überhaupt nichts von diesen Dingen, und ich glaube nicht, dass die mich dort verarschen wollen.

Hier ist die Vorgängerversion meines Buches mit Version 2.5:
http://openbook.galileocomputing.de/pyt ... 33564f01e5
Der Text ist aber gleich.
deets

Diese Beschreibung ist doch nicht vollstaendig. Du hast doch noch jede Menge Dinge machen muessen, die darin nicht beschrieben werden - und die du uns hier selbstredend verschweigst.

Mit welchem Compiler machst du das, benutzt du Visual Studio oder den mingw, hast du ein Projekt angelegt in VS, oder ein Makefile geschrieben? Usw. usf.

Ich vermute mal, dass du VS benutzt, und irgendwie ein Beispiel-Projekt gebaut hast. Und das ist jetzt halt im Debug-Modus kompiliert.


Und noch ein Nachtrag: doch, das Galileo-Buch kann man durchaus grenzwertig als Verarschung bezeichnen.
Christi258
User
Beiträge: 8
Registriert: Samstag 11. Juni 2011, 12:30

Ich benutzte Visual Studio 2008, Ich habe keine Ahnung von Makefiles(weiß nur dass es sowas gibt), aber mein Projekt ist völlig selbst entwickelt.
Danke für deine Hilfe
deets

Also, dann hast du doch build-settings irgendeiner Weise. Ich kenne VS nicht, aber da kannst du jetzt bestimmen, ob es ein Release oder Debug build ist. Google halt doch mal ein bisschen, das ist doch nicht so schwer...
Nuby
User
Beiträge: 8
Registriert: Donnerstag 19. Juli 2012, 15:13

deets hat geschrieben::roll: Bist du wirklich, dass du einer solchen Aufgabe gewachsen bist? Du scheinst noch nicht mal die grundlegensten Begriffe der Entwicklung unter C++ zu beherrschen.
Naja...ich würde es mal nicht so eng sehen. Schließlich versucht man ja weiterzukommen und das geht nicht durch Nichtstun. ;)
deets

Sach mal, bist du nekrophil, oder warum graebst du hier all die alten, laengst gestorbenen Threads aus? Das ist zwar nicht per se verboten, aber da du ausser Gemeinplaetzen ja nicht wirklich was dazu beitraegst doch eher irritierend.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wo ist der Like-Button? Ohwait....
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten