Неопределенный символ sunOglCurPrimTablePtr в Solaris-x86 - PullRequest
1 голос
/ 31 марта 2010

Я портировал программу на C ++ с Solaris Sparc на Solaris x86. Программа использует библиотеку OpenGL, а компиляция выполняется на рабочей станции Sun Ultra27 со стандартным 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 голосов
/ 09 апреля 2010

Оказалось, что определенный стандартный API OpenGL будет переведен во внутренние функции 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 для Приложения Solaris.

Библиотеки OpenGL поставлялись с SUN Solaris Sparc содержит внутренние процедуры SUN. Но их нет в библиотеке OpenGL в Solaris x86 / x64 (предоставленной NVIDIA). Я не уверен, где именно произошел «перевод», но наша проблема решена! :)

...