[Python-de] PYthon als Skriptsprache

Diez Roggisch deets at web.de
Mi Apr 10 10:25:36 CEST 2013


On 4/10/13 7:37 AM, "renegrothmann at gmail.com" <renegrothmann at gmail.com>
wrote:

>Ich versuche derzeit Python als Skriptsprache für mein Projekt Euler Math
>Toolbox einzusetzen. Erste Erfolge sind ermutigend, wenngleich die
>Geschwindigkeit nicht ganz an C heranreicht.
>
>Aber es gibt folgende Probleme:
>
>Ich binde Python27.lib und die Include-Dateien von Python in mein
>C++-Projekt ein (Visual C++ 2010). Danach läuft alles wie erwartet.
>
>Wenn ich das Programm ausleifere, startet es nicht (Python27.dll
>missing). Kopiere ich Python27.dll in das Programmverzeichnis, so startet
>das Programm. Beim Aufruf von Py_init crashed es aber.
>
>Installiert man Python27 auf dem Zielrechner, geht alles. De-installiert
>man Python27 wieder, geht alles immer noch. Ich schließe daraus, dass
>Python außer der DLL noch einen Registry-Eintrag benötigt, der bei der
>Deinstallation nicht gelöscht wird.

Dieser Schluss ist falsch. Wir betten Python ebenfalls ein, und weder ist
die Registry betroffen, noch braucht's eine Python-Installation.

Ich vermute, deine Linker-Einstellungen sind inkorrekt.

Hast du mal versucht, eine debug-variante von Python zu nehmen, und den
crash nachvollzogen?

>
>Ist das korrekt?
>
>Zweitens stellt sich die Frage, warum das Programm beim Start die DLL
>lädt, obwohl ich Python erst viel später verwende.
>
>Kann ich das vermeiden?

Weil jede DLL, die du verlinkst, geladen wird. Du kannst das selbst machen
mit LoadLibrary, aber das ist dann recht kompliziert, denn dann musst du
sämtliche calls in die Python-DLL führen über "blinde" Funktionspointer
führen, und die dynamisch auflösen. Wehe, du springst in code ein, der
dann Python voraussetzt. Ist recht viel Arbeit.

Warum willst du denn so etwas tun?

Diez




Mehr Informationen über die Mailingliste python-de