Mengantaramukakan DLL dengan Python Dipermudahkan Menggunakan Ctypes
Memanfaatkan fungsi DLL dari dalam Python boleh menjadi tugas yang sukar. Artikel ini meneroka kaedah mudah yang menghilangkan keperluan untuk kod pembalut C luar: ctypes.
ctypes melambangkan kemudahan penggunaan. Ia menyediakan antara muka yang elegan untuk berinteraksi secara asli dengan struktur data jenis C dan prototaip fungsi. Pertimbangkan coretan kod berikut:
<code class="python">import ctypes # Load the DLL into memory hllDll = ctypes.WinDLL("c:\PComm\ehlapi32.dll") # Define the function prototype and parameters hllApiProto = ctypes.WINFUNCTYPE( ctypes.c_int, # Return type ctypes.c_void_p, # Parameter 1 ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p) # ... hllApiParams = ( (1, "p1", 0), (1, "p2", 0), (1, "p3", 0), (1, "p4", 0)) # Create a Python-callable function hllApi = hllApiProto(("HLLAPI", hllDll), hllApiParams) # Call the DLL function with variables p1 = ctypes.c_int(1) p2 = ctypes.c_char_p(sessionVar) p3 = ctypes.c_int(1) p4 = ctypes.c_int(0) hllApi(ctypes.byref(p1), p2, ctypes.byref(p3), ctypes.byref(p4))</code>
ctypes menyediakan sokongan untuk pelbagai jenis data C (cth., int, char, short, void*) dan membenarkan nilai pass-by atau pass-by-reference. Fleksibilitinya meluas kepada pengembalian jenis data tertentu juga.
Menggunakan ctypes amat berfaedah apabila berurusan dengan DLL dengan antara muka yang konsisten, seperti EHLLAPI IBM. Dalam kes sedemikian, satu fungsi ctypes boleh mengendalikan semua fungsi DLL. Walau bagaimanapun, perpustakaan dengan tandatangan fungsi yang berbeza-beza akan memerlukan konfigurasi fungsi ctypes yang berbeza untuk setiap fungsi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengantaramuka DLL dengan Python Dengan Mudah Menggunakan ctypes?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!