C-Programme in Python einbinden

Code-Stücke können hier veröffentlicht werden.
gfmwm
User
Beiträge: 8
Registriert: Samstag 26. September 2009, 18:35

Ich grabe nur ungern Leichen aus, aber ich habe ein Problem mit ctypes.

Ich nutze Python 3.1 unter Win7 (64-bit). Ich erstelle folgendes Skript:

Code: Alles auswählen

import ctypes
f = ctypes.cdll.LoadLibrary("fib.dll") 
print(f.fib(35))
Die fib.dll habe ich mit MinGW erstellt. Unter Ubuntu läuft die Sache, nur unter Windows nicht. Ich erhalte immer folgende Fehlermeldung:
Traceback (most recent call last):
File "C:\...\ctypes.py", line 1, in <module>
import ctypes
File "C:\...\ctypes.py", line 2, in <module>
f = ctypes.cdll.LoadLibrary("fib.dll")
AttributeError: 'module' object has no attribute 'cdll'
Habe schon alles Mögliche probiert (z.B. Systempfade angepasst, Python neu installiert, etc.), leider ohne Erfolg.

Wenn ich allerdings im IDLE folgendes eingebe:

Code: Alles auswählen

>>> import ctypes
>>> print(ctypes.cdll)
<ctypes.LibraryLoader object at 0x027BDFB0>
Scheint es zu funktionieren!?!

Hat jemand eine Idee woran es liegen könnte?
[code]print(''.join(map(lambda c:chr(33+((ord(c)-33+47)%94)),[x for x in 'p{{/*~&#/qp$t/p#t/qt{~}v/%~/&$/PPP'])).replace('^',' '))[/code]
BlackJack

@gfmwm: Du hast Dein Skript nicht zufällig `ctypes` genannt!? ;-)
gfmwm
User
Beiträge: 8
Registriert: Samstag 26. September 2009, 18:35

@BlackJack

Doch das habe ich. Aber, wenn ich es als "test123.py" abspeichere, bekomme ich exakt dieselbe Fehlermeldung.
[code]print(''.join(map(lambda c:chr(33+((ord(c)-33+47)%94)),[x for x in 'p{{/*~&#/qp$t/p#t/qt{~}v/%~/&$/PPP'])).replace('^',' '))[/code]
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Dann lösche noch die Datei ctypes.pyc ;)
gfmwm
User
Beiträge: 8
Registriert: Samstag 26. September 2009, 18:35

Ok, das hat geklappt. Vielen, vielen Dank.
Hätte nie gedacht, dass es daran liegen könnte. :D
[code]print(''.join(map(lambda c:chr(33+((ord(c)-33+47)%94)),[x for x in 'p{{/*~&#/qp$t/p#t/qt{~}v/%~/&$/PPP'])).replace('^',' '))[/code]
Antworten