title: ctypes.cast always throw ArgumentError
body: <p>I have the following code</p>
  
  <pre><code> 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)
  </code></pre>
  
  <p>throw a <code>ArgumentError</code> from <code>cast</code> function <code>ctypes.ArgumentError: argument 1: &lt;class 'TypeError'&gt;: wrong type</code></p>
  
  <p>the question is why? where is the error in my code i'm a newbiew with ctypes but i find examples like <code>cast(c_int, POINTER(c_char_p))</code> for pŕint <code>c_int</code> without get a <code>c_int(2)</code></p>