Seite 1 von 1

C++ Modul

Verfasst: Donnerstag 12. Februar 2009, 14:39
von theliquidwave
Hi.
Versuche mich gerade an einem kleinem C++ Modul für Python 2.5.
Allerdings schlage ich schon daran fehl, die Python.h zu includen. Sobald das passiert, kommen weit mehr als 100 Fehler aus der windows.h / winnt.h.

Hier mal ein Pastebin Link: http://nopaste.org/p/asFqkYVJG (wird aber wohl nichts bringen).

Ich habe keine weiteren Informationen dazu gefunden. Muss man noch etwas bestimmtes definieren?

~ Chris

Verfasst: Sonntag 15. Februar 2009, 16:06
von Joghurt
Mach dir das Leben einfacher und nimm Boost::python.

(Auf deine Frage bezogen vermute ich, dass du Python.h als extern "C" includieren müsstest; aber nimm boost::python, das erspart dir viel viel arbeit. Eine Lernkurve ist aber auch dort vorhanden)

Verfasst: Montag 16. Februar 2009, 15:48
von theliquidwave
Funktioniert Boost::python auch mit Linux?
Eigentlich wollte ich da keine Umwege machen, sondern lieber direkt arbeiten ;)

~ Chris

Verfasst: Montag 16. Februar 2009, 17:07
von sebastinas
Chrisber hat geschrieben:Funktioniert Boost::python auch mit Linux?
Ja. Mit der Dokumentation zu Boost.Python sollte man auch halbwegs weit kommen. Ein paar fortgeschrittene Sachen sind zwar sehr tricky, aber es ist auf jeden Fall angenehmer damit zu Arbeiten als mit der Python C-API.

Verfasst: Dienstag 17. Februar 2009, 00:15
von theliquidwave
Hi.
Habe das nochmal mit extern "C" probiert, aber auch das bringt nichts.
Das kann doch nicht sein dass ich der einzige bin, der damit Probleme hat. Habe bei Google nichts derartiges gefunden, immer nur im Zusammenhang mit dem DirectX8 SDK und das benutze ich gar nicht...

~ Chris

Verfasst: Dienstag 17. Februar 2009, 03:04
von sebastinas
Schon mal versucht die include-Reihenfolge zu vertauschen? Aber das ist auch nur so dahin geraten ... ohne Code wird das schwierig.

Verfasst: Dienstag 17. Februar 2009, 17:29
von theliquidwave
Hi.
Habe jetzt mal die Reihenfolge 10 mal verändert, hat nichts gebracht.
Habe mal das gesamte Projekt inkl. aller Abhängigkeiten hochgeladen (MSVC++08EE), vielleicht hast du ja mal Lust reinzuschauen ;)
Die windows.h wird in der SigScan.hpp im Ordner Dateien includet, der ganze Python krams befindet sich in Dateien/PythonHook.cpp.

*Links entfernt*

EDIT: Ich habs!!! Es lag daran, dass ich den Python Ordner als Includepfad gesetzt habe. Habe jetzt anstatt

Code: Alles auswählen

<Python.h>
ein

Code: Alles auswählen

"../Python/Python.h"
und es geht!!! Danke an alle trotzdem :)

~ Chris

Verfasst: Mittwoch 18. Februar 2009, 01:27
von Leonidas
Bessere Lösung: dem Compiler mit -I den richtigen Pfad zu den Includedateien gleich mitgeben. Schließlich hat nicht jeder seine ``Python.h`` in ``../Python/Python.h``.

Verfasst: Mittwoch 18. Februar 2009, 16:11
von theliquidwave
Ähm..
Es lag daran, dass ich den Python Ordner als Includepfad gesetzt habe.
Habe ich doch gemacht ;)

~ Chris

Verfasst: Mittwoch 18. Februar 2009, 16:25
von Leonidas
Wie hast du den Python-Ordner in den Include-Pfad gesetzt?

Verfasst: Mittwoch 18. Februar 2009, 16:26
von BlackJack
Aber anscheinend nicht richtig, also nicht auf den gleichen Pfad, den ein "../Python/Python.h" ergibt. Denn dann würde es keinen Unterschied zwischen den beiden Varianten geben, ausser dass `-I` mit dem richtigen Pfad und <Python.h> in der Datei, der sauberere Weg ist.

Verfasst: Donnerstag 19. Februar 2009, 13:38
von theliquidwave
Doch.
Wenn ich den Includepfad setze und <Python.h> benutze, kommen diese ganzen Fehler aus der windows.h - was soll ich bitte sonst machen außer den Pfad direkt einzugeben damit es funktioniert?!

~ Chris

Verfasst: Donnerstag 19. Februar 2009, 14:16
von Leonidas
Ja und wie setzt du das? Wie sieht denn der Compiler-Aufruf aus?

Verfasst: Donnerstag 19. Februar 2009, 20:03
von theliquidwave
Weiß ich nicht.
Ich habe den Pfad ganz normal in den Projekteinstellungen von MSVC++08EE gesetzt und compiled, was den Fehler verursachte.

~ Chris

Verfasst: Donnerstag 19. Februar 2009, 20:06
von Leonidas
Was heißst "ganz normal"? Welchen Pfad *genau*? Was steht in der Logdatei beim aufruf von ``cl``?