2

次のコードがあります

 from ctypes import cast, c_char_p, c_int, byref, POINTER

 # ...
 mj, mn, pt = c_int(), c_int(), c_int()
 // FreeType
 __dll__.FT_Library_Version(__handler__, byref(mj), byref(mn), byref(pt))

 print("{0}.{1}.{2}".format(cast(mj, POINTER(c_char_p).value, cast(mn, POINTER(c_char_p).value, cast(pt, POINTER(c_char_p)).value)

ArgumentErrorfromcast関数をスローするctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type

問題はなぜですか?私のコードのどこにエラーがありますcast(c_int, POINTER(c_char_p))c_int?c_int(2)

4

1 に答える 1

2

ドキュメントから:

cast() 関数を使用して、ctypes インスタンスを別の ctypes データ型へのポインターにキャストできます。cast() は、何らかのポインターに変換される、または変換できるctypes オブジェクトと、ctypes ポインター型の 2 つのパラメーターを取ります。これは、最初の引数と同じメモリ ブロックを参照する 2 番目の引数のインスタンスを返します。

これをやりたいだけだと思います:

print("%d.%d.%d"%(mj.value,mn.value,pt.value))
于 2013-06-04T03:25:58.530 に答える