2010-05-28 8 views
0

Je construis une application avec PySide, il y a une manipulation d'image qui doit être faite et l'utilisation du code Python est trop lente. Par conséquent, j'ai piraté un fichier .dll qui le fera pour moi. La définition de la fonction est la suivante:ctypes et PySide

extern "C" { 
QRectF get_image_slant(QImage *img, float slantangle, float offset) { 

Maintenant, je peux charger cette fonction dans via ctypes. Mais je ne peux pas sembler obtenir des ctypes pour accepter un QImage. J'ai essayé d'appeler comme ceci:

ext.get_image_slant(QImage(), 0, 0) 

Et la réponse que je reçois est:

File "<stdin>", line 1, in <module> 
ctypes.ArgumentError: argument 1: <type 'exceptions.TypeError'>: Don't know how to convert parameter 1 

Je fatigué couler la QImage à un c_void_p et il n'a pas comme ça non plus. De ce que je peux dire QImage() en python doit correspondre exactement à une QImage * en C, mais Python ne semble pas comprendre que ..

Y at-il un moyen de forcer la coulée?

Répondre

1

Depuis ctypes pour C++ isn't working very well, je recommanderais d'utiliser le propre wrapper de PySide - Shiboken. Ils l'utilisent pour envelopper les bibliothèques Qt elles-mêmes. Puisque votre code traite de l'objet Qt, cela semble être le choix parfait pour vous.