Question

Je construis une application avec PySide, il y a une certaine manipulation d'image qui doit être fait et en utilisant le code Python pour cela est trop lent. Par conséquent, je piraté un fichier .dll qui le fera pour moi. La définition de la fonction est la suivante:

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

Maintenant, je peux charger cette fonction via ctypes. Mais je ne peux pas sembler obtenir ctypes d'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 le casting fatigué QImage à un c_void_p et ne pas comme ça non plus. D'après ce que je peux dire QImage () en python devrait sembler exactement à la carte QImage * en C, mais Python ne pas comprendre que ..

Est-il possible de forcer le casting?

Était-ce utile?

La solution

Depuis ctypes C ++ ne fonctionne pas très bien , je vous conseille d'utiliser propre emballage de PySide - shiboken . Ils utilisent en fait pour envelopper le Qt se libs. Étant donné que vos offres de code avec Qt objet, cela semble être le choix parfait pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top