سؤال

كنت أقوم بنقل برنامج 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 الافتراضية/ulusr/libgl.so (روابط إلى /usr/x11/lib/nvidia/libgl.so.1). لكنني لم أجد أي شيء منه:

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

البحث على الويب أو Sun أو Nvidia لم يؤدي إلى أي مورد مفيد. أي دليل أو يساعد؟ شكرًا!

هل كانت مفيدة؟

المحلول

اتضح أنه سيتم ترجمة بعض API OpenGL Standard إلى وظائف 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 تحتوي على روتينات داخلية للشمس. لكنها غير موجودة في Libraris OpenGL في Solaris X86/X64 (والتي توفرها NVIDIA). لست متأكدًا من أين حدثت "الترجمة" بالضبط ، لكن مشكلتنا تم حلها! قون

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top