Solaris-x86中未定义的符号sunOglCurPrimTablePtr

时间:2010-03-31 03:14:09

标签: opengl x86 solaris solaris-10

我正在将一个C ++程序从Solaris Sparc移植到Solaris x86。该程序使用OpenGL库,编译在Sun Ultra27 workstation中执行,默认GCC(3.4.3)和OpenGL库随机附带。

但是,在链接时找不到以下OpenGL调用:

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

,sunOglCurPrimTablePtr和sunOglCurrentContext都应该在默认的OpenGL库/usr/lib/libGL.so中可用(链接到/usr/X11/lib/NVIDIA/libGL.so.1)。但我找不到任何东西:

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

在网上搜索,SUN或Nvidia没有带来任何有用的资源。任何线索或帮助?谢谢!

1 个答案:

答案 0 :(得分:0)

事实证明,某些标准OpenGL API将被转换为SUN的内部功能。通过定义SUN_OGL_NO_VERTEX_MACRO编译标志,程序将不再引用sunOgl *符号并解决问题。

信息见http://java423.vicp.net:8652/infoserver.central/data/syshbk/collections/TECHNICALINSTRUCTION/1-61-210284-1.html,第9项:

  

没有SUN_OGL_NO_VERTEX_MACRO   编译标志,所有调用   glVertex *(),glNormal *(),glColor *(),   glIndex *()和glTexCoord *()将是   翻译成内部的,   性能增强的例程。这些   函数调用何时不会显示   使用dbx()或执行时   与SLI相关的OpenGL for interposing for   Solaris应用程序。

OpenGL库附带SUN Solaris Sparc包含SUN内部例程。但它们并不存在于Solaris x86 / x64(由NVIDIA提供)的OpenGL库中。我不确定“翻译”到底在哪里,但我们的问题已经解决了! :)