2010-08-17 18 views
1

J'ai des difficultés à créer une version de Python avec ctypes en utilisant le compilateur Intel (11.1). Le problème est que libffi sous le module ctypes ne fonctionne pas correctement lors de l'interfaçage avec, par ex. OpenGL.Compilateur Intel et Python/ctypes/libffi

A l'origine, libffi n'a pas compiler en utilisant les compilateurs Intel comme __int128_t ne définit pas, et j'ai suivi le travail autour qui a été énuméré plusieurs endroits, notamment par la définition d'un nouveau type:

typedef struct { int64_t m[2]; } __int128_t;

Cette suit une réponse donnée par Intel: http://software.intel.com/en-us/forums/showthread.php?t=56652

Le patch suggère alors quelque chose comme ceci:

typedef struct { int64_t m[2]; } __int128_t; 
//and then change where the uint64_t is assigned to this to be: 
sse[x].m[0] = *(uint64_t*) v; 
sse[x].m[1] = 0; 
//and where the uint32_t is assigned to: 
sse[x].m[0] = *(uint32_t*) v; 
sse[x].m[1] = 0; 

L'application du correctif, la compilation des éléments et ctypes devient disponible pour l'importation, cependant, lors de l'interfaçage avec OpenGL, les choses ne fonctionnent pas. L'exécution du programme d'exemple de PyQt hellogl.py donne une vue vide.

Existe-t-il un meilleur moyen de le faire?

Dan;

+0

Il a été discuté comme un bug Python: http://bugs.python.org/issue4130 – Dan

+0

On peut aussi dire que compiler Python (et libffi) avec GCC fonctionne - mais je suis intéressé par une solution Intel complète . Dans le pire des cas, je demanderai que libffi soit compilé uniquement par GCC. – Dan

Répondre

3

Je suis l'auteur de libffi. Je recommande d'envoyer une note à [email protected] contenant tous ces détails. Je recommande également d'exécuter la suite de tests libffi sur un libffi intel-compiler. Assurez-vous d'envoyer les résultats à [email protected] et nous pouvons vous aider à comprendre le problème.

+0

Salut Anthony - Je viens de voir ta réponse maintenant. Nous avons cessé d'utiliser le compilateur Intel (pour d'autres raisons), mais apprécions votre offre. Si nous reprenons le compilateur Intel, la version de Python que nous compilerons aura probablement changé (entre autres choses) - et nous pouvons prendre si de là, si ça va. – Dan

+0

Je marque votre réponse comme acceptée, cependant :) – Dan