2009/12/27

ctypes - наш друг!

Модуль ctypes с легкостью позволяет использовать функции сторонних DLL или SO файлов. В ctypes есть три метода подгрузки библиотек:
  • cdll() - использует соглашение cdecl при вызове функций
  • windll() - использует stdcall (для Microsoft Win32 API)
  • oledll() - использует cdecl + коды возврата HRESULT (для функций Microsoft COM)
Пример: попробуем воспользоваться широко известной функцией printf() из языка С. В Linux она находится в библиотеке /lib/libc.so.6, в Windows - C:\windows\system32\msvcrt.dll.

Код для Linux:
from ctypes import *
libc = CDLL("libc.so.6")
message = 'Hello world!\n'
libc.printf('Testing: %s', message)
Код для Windows:
from ctypes import *
msvcrt = cdll.msvcrt
message = 'Hello world!\n'
msvcrt.printf('Testing: %s', message)
Исчерпывающий мануал по ctypes находится здесь.

No comments:

Post a Comment