ホームページ >バックエンド開発 >Python チュートリアル >ctypes を使用するときに、「argtypes」で「s」を省略すると不正な戻り値が発生するのはなぜですか?
を使用して Python から C 関数とインターフェイスする場合ctypes では、関数の引数の型と戻り値の型を正しく指定することが重要です。そうしないと、あるいはオプション名のスペルを間違えると、未定義の動作が発生する可能性があります。
提供された例では、問題は argtype オプションの指定を誤ることにより発生します。このエラーには、引数の型指定で終端 's' が省略されており、その結果、関数の引数リストに不正な型が適用されます。
この問題を修正するには、argtype の指定を修正するだけです。不足している「」を追加することで。修正されたコードは次のようになります。
from ctypes import * so_file = '/Users/.../test.so' functions = CDLL(so_file) functions.power.argtypes = [c_float, c_int] functions.power.restype = c_float print(functions.power(5,3))
argtype および restype オプションを正しく指定することで、ctypes メカニズムは Python 間で引数と戻り値を適切に変換します。そしてCタイプ。これにより、Python 環境での C 関数の正確な呼び出しと実行が保証されます。
以上がctypes を使用するときに、「argtypes」で「s」を省略すると不正な戻り値が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。