Nilai Salah Dikembalikan daripada Fungsi C Dipanggil melalui Python Menggunakan Ctypes
Apabila memanggil fungsi C daripada Python menggunakan Ctypes, pastikan spesifikasi yang betul bagi jenis hujah dan pulangan adalah penting. Kegagalan berbuat demikian boleh mengakibatkan tingkah laku yang tidak ditentukan dan nilai yang salah dikembalikan.
Dalam kes anda, anda menentukan fungsi C yang menaikkan nombor kepada kuasa tetapi menemui hasil yang salah apabila memanggilnya daripada Python. Penyebabnya ternyata adalah salah ejaan atribut argtypes. Kod yang diperbetulkan ialah:
from ctypes import * so_file = '/Users/.../test.so' functions = CDLL(so_file) functions.power.argtypes = [c_float, c_int] # Correct spelling functions.power.restype = c_float print(functions.power(5,3))
Dengan menyatakan argtypes dan taip semula, Ctypes tahu cara menukar antara jenis data Python dan C, memastikan pengiraan dan pengendalian nilai yang betul. Pembetulan ini harus menyelesaikan isu dan mengembalikan output yang dijangkakan.
Implikasi untuk Pengendalian Tatasusunan
Seperti yang anda nyatakan, anda berhasrat untuk akhirnya memanggil fungsi C yang mengembalikan dua -tatasusunan C berdimensi. Ini melibatkan pertimbangan tambahan:
Dengan menangani aspek ini dengan teliti, anda seharusnya berjaya memanggil fungsi C yang mengembalikan tatasusunan dua dimensi daripada Python menggunakan Ctypes.
Atas ialah kandungan terperinci Mengapa Nilai Pulangan Fungsi C Saya Tidak Betul Apabila Dipanggil daripada Python Menggunakan ctypes?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!