2010-03-31 4 views
1

Je portais un programme C++ de Solaris Sparc vers Solaris x86. Le programme utilise la bibliothèque OpenGL et la compilation est effectuée dans un Sun Ultra27 workstation avec la bibliothèque GCC (3.4.3) par défaut et la bibliothèque OpenGL livrés avec la machine.Symbole non défini sunOglCurPrimTablePtr dans Solaris-x86

Cependant, l'appel OpenGL suivant n'a pas pu trouver tout lien:

Undefined symbol     first referenced in file 
sunOglCurPrimTablePtr    ../../lib/libgltt.so 
sunOglCurrentContext    ../../lib/libgltt.so 

qui, à la fois sunOglCurPrimTablePtr et sunOglCurrentContext devraient être disponibles dans la bibliothèque OpenGL par défaut /usr/lib/libGL.so (liens vers/usr/X11/lib/NVIDIA/libGL.so.1). Mais je ne pouvais pas trouver quelque chose de lui:

> nm /usr/lib/libGL.so 
/usr/lib/libGL.so: 

Recherche sur le Web, SUN ou Nvidia ne conduit à aucune ressource utile. Toute idée ou aide? Merci!

Répondre

0

Il s'est avéré que certaines API OpenGL standard seraient traduites dans les fonctions internes de SUN. En définissant l'indicateur de compilation SUN_OGL_NO_VERTEX_MACRO, le programme ne fera plus référence au symbole sunOgl * et le problème sera résolu.

L'information se trouve à http://java423.vicp.net:8652/infoserver.central/data/syshbk/collections/TECHNICALINSTRUCTION/1-61-210284-1.html, point 9:

Sans le drapeau de compilation SUN_OGL_NO_VERTEX_MACRO , tous les appels à glVertex *(), glNormal *(), glColor *(), glIndex * () et glTexCoord *() sera traduit en interne, routines améliorées par les performances. Ces appels de fonction ne s'affichent PAS lorsque dbx() est utilisé ou lors de l'exécution de l'interfaçage lié à SLI d'OpenGL pour les applications Solaris .

Les bibliothèques OpenGL fournies avec SUN Solaris Sparc contient des routines internes SUN. Mais ils n'existent pas dans les libraris OpenGL sous Solaris x86/x64 (fourni par NVIDIA). Je ne suis pas sûr où est exactement la "traduction" s'est produite, mais notre problème résolu! :)

Questions connexes