1

Solaris Sparc から Solaris x86 に C++ プログラムを移植していました。このプログラムは OpenGL ライブラリを利用し、コンパイルはデフォルトの GCC (3.4.3) を備えたSun Ultra27 ワークステーションで実行され、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:

Web、SUN、または Nvidia で検索しても、役立つリソースは見つかりませんでした。手がかりや助けはありますか?ありがとう!

4

1 に答える 1

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() が使用されている場合、または Solaris アプリケーション用の OpenGL の SLI 関連の割り込みを実行している場合には表示されません。

OpenGL ライブラリは SUN に付属しています Solaris Sparc には SUN 内部ルーチンが含まれています。ただし、Solaris x86/x64 (NVIDIA が提供) の OpenGL ライブラリには存在しません。「翻訳」が発生した正確な場所はわかりませんが、問題は解決しました! :)

于 2010-04-09T04:09:11.067 に答える