Seite 1 von 1

Pfad einer dll, ctypes

Verfasst: Montag 14. April 2008, 11:55
von JR
Hallo!

Leider bin ich nicht fündig geworden und deshalb folgende Frage:

Ich verwende ctypes und möchte eine *.dll mit

Code: Alles auswählen

ctypes.cdll.LoadLibrary("C:\C16\Temp\easyffi32.dll") 
ohne den Pfad C:\C16\Temp vorher in die Umgebungsvariable "PATH" zu schreiben. Ist dies möglich?

Ich bekomme immer den Fehler

Code: Alles auswählen

WindowsError: [Error 126] Das angegebene Modul wurde nicht gefunden
Wenn ich meine *.dll in C:\WINDOWS\system32 ablege, geht es "natürlich".
Vielen Dank und Grüße
JR

Verfasst: Montag 14. April 2008, 12:04
von shakebox
ersetz mal die \ durch /, dann muesste das gehen. Denn \ in Strings bedeutet ja was anders. Python kommt auf allen Plattformen glaube ich mit / als Pfadtrenner klar.

Alternativ koenntest Du auch einen Raw-String draus machen, das koennte auch gehen:

Code: Alles auswählen

ctypes.cdll.LoadLibrary(r"C:\C16\Temp\easyffi32.dll") 

Verfasst: Montag 14. April 2008, 12:26
von JR
Hi!

Ich habe in meinem Code "\\" benutzt. Bringt leider nix!

Gruß
JR

Verfasst: Montag 14. April 2008, 15:11
von Sr4l
Probier mal in Python:

Code: Alles auswählen

import sys
sys.path.append("Pfad/zu/der/dll")
und dann nur dll Namen angeben

*edit*
ich nehme es zurück, geht nicht ;-)

das geht:

Code: Alles auswählen

ctypes.cdll.LoadLibrary("C:\\Program Files\\VirtualDub\\vdsvrlnk64.dll")
ctypes.cdll.LoadLibrary(r"C:\Program Files\VirtualDub\vdsvrlnk64.dll")
ctypes.cdll.LoadLibrary("C:/Program Files/VirtualDub/vdsvrlnk64.dll")

Verfasst: Montag 14. April 2008, 15:16
von JR
Hi!

Auf die Idee kam ich auch schon, klappt leider ebenfalls nicht.
Trotzdem danke für den Tipp!

Gruß
JR

Verfasst: Montag 14. April 2008, 15:19
von Sr4l
Wie sieht es relativ aus, wenn die Python Datei und die DLL im gleichen Ordner liegen und du nur den Namen angibst?

Wie gesagt bei mir (Python 2.5) gehen alle Varianten.

Verfasst: Dienstag 15. April 2008, 09:43
von Masaru
Unter Python 2.3 hab ich auch keine Schwierigkeiten:

Code: Alles auswählen

>>> import ctypes as ct
>>> tll =  ct.cdll.LoadLibrary(r'E:\work\c_testdll\Release\libc_testdll.dll')
>>> # ... funxt
>>Masaru<<

Verfasst: Dienstag 15. April 2008, 10:00
von rayo
Hast du ev. irgendwelche abhängigen DLLs nicht? Also die esayffi32.dll braucht vielleicht no andere DLLs.

Gruss