Python ctypes Notlarım – 1

Başlamadan önce; Her iki dile orta derecede hakim olmanız gerekmektedir. (Python ve C  / C++)

Ctypes, Python için; C değişken türlerine erişim imkanı sağlayan ve paylaşımlı olarak derlenen kütüphane dosyalarının fonksiyonlarına erişim sağlar. (Windows için .dll ; Linux için .so)

Kütüphaneleri projeye dahil etmek

Dışarıdan kütüphane yüklemek için .cdll fonksiyonunu, Windows’un yerleşik kütüphanelerini erişmek için .windll ve .oledll nesneleriyle kütüphanelere erişim sağlayabilirsiniz.

Pekiştirmek için bir tane MessageBox örneği yapalım;

ctypes-user32.dll-messageboxa

MessageBox hakkında derinlemesine bilgi için Microsoft’u ziyaret etmekte yarar var.

 

Dizindeki kütüphaneye erişmek için ise cdll.LoadLibrary fonksiyonunu kullanıyoruz. Fonksiyonlarının tümü void olmadığı için bir değişkene referans olarak atayıp kullanmamız gerekiyor. Şöyle ki;

 

Rastgele bir sayı üretecektir. Buradaki en önemli noktalardan biri C’de NULL kullanırken Python’da ise None kullanmamız gerektiğidir. Ctypes ile birlikte çalışırken None değeri NULL değeri yerine geçer.

Bilindiği üzere, .dll uzantılı dosyalar Windows üzerinde çalışırken .so uzantılı dosyalar Linux ve Mac gibi UNIX tabanlı sistemlerde çalışmaktadır. Ama Python > Ctypes kullanırken tamamen platformdan bağımsız olarak .so ve .dll dosyalarını istenildiği gibi projenize LoadLibary fonksiyonu ile dahil edebilirsiniz.

Ek olarak C/C++ kütüphanelerini komut satırında nasıl derleyeceğimizden bahsederek bugünlük bitirelim.

 

Windows


MinGW kurulu olmasının dışında ortam değişkenlerinden PATH değerine gcc.exe’nin yolu belirtilmelidir.

Linux

Leave a Reply

Your email address will not be published. Required fields are marked *