我正在将一个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没有带来任何有用的资源。任何线索或帮助?谢谢!
答案 0 :(得分:0)
事实证明,某些标准OpenGL API将被转换为SUN的内部功能。通过定义SUN_OGL_NO_VERTEX_MACRO编译标志,程序将不再引用sunOgl *符号并解决问题。
没有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库中。我不确定“翻译”到底在哪里,但我们的问题已经解决了! :)