gray hat python my_debugger_defines geht nicht!

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
amigo
User
Beiträge: 10
Registriert: Donnerstag 12. Januar 2012, 16:16

hi,
ich lese grad "Gray hat python" und mach die beispiele nach.
Allerdings kommt bei mir folgender Fehler wenn ich my_debugger_defines öffne:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python27\python\gray hat python\src\debugger\my_debugger_defines.py", line 16, in <module>
    class STARTUPINFO(Structure):
TypeError: Error when calling the metaclass bases
    second item in _fields_ tuple (index 0) must be a C type
ich hab mir alles noch mal zeile für zeile angeguckt. Es ist alles gleich wie im original.
Könnte es etwas damit zutun haben, dass ich python 2.7 verwende statt 2.5?
Danke im Voraus
deets

Glaube ich nicht. Bitte zeig uns den Source.
amigo
User
Beiträge: 10
Registriert: Donnerstag 12. Januar 2012, 16:16

oh sorry voll vergessen hier:

Code: Alles auswählen

from ctypes import *

WORD =  c_ushort()
DWORD = c_ulong()
LPBYTE= POINTER(c_ubyte)
LPTSTR= POINTER(c_char)
HANDLE = c_void_p

DEBUG_PROCESS = 0x00000001
CREATE_NEW_CONSOLE = 0x00000010

class STARTUPINFO(Structure):
    _fields_ = [
                ("cb", DWORD),
                ("lpReserved", LPTSTR),
                ("lpDesktop", LPTSTR),
                ("lpTitle", LPTSTR),
                ("dwX", DWORD),
                ("dxY", DWORD),
                ("dxXSize", DWORD),
                ("dxYSize", DWORD),
                ("dwXCountChars", DWORD),
                ("dxYCountChars", DWORD),
                ("dwFillAttributes", DWORD),
                ("dwFlags", DWORD),
                ("wShowWindow", WORD),
                ("cbReserved2", WORD),
                ("lpReserved2", LPBYTE),
                ("hStdInput", HANDLE),
                ("hStdOutput", HANDLE),
                ("hStdError", HANDLE)
                ]

class PROCESS_INFORMATION(Structure):
    _fields_ = [
                ("hProcess", HANDLE),
                ("hThread", HANDLE),
                ("dwProcessId", DWORD),
                ("dwThreadId", DWORD)
                ]
BlackJack

@amigo: `WORD` und `DWORD` sind falsch definiert. Da wird der *Typ* verlangt und nicht ein *Exemplar* vom Typ. Das ist letztlich auch genau das was die Fehlermeldung aussagt.
Antworten