Subject: Re: [Nel] Exec pb with '-with-debug'

From: Guillaume Morin <[email-masked]>
Date: Tue, 26 Feb 2002 18:37:09 +0100

Hi Alain,

> [dutech@crevic client]$ snowballs
> INF32265 client.cpp 145 : Starting Snowballs !
> WRN32265 dru.cpp 95 : when loading dynamic library
> 'libnel_drv_opengl.so': /usr/local/lib/libnel_drv_opengl.so:
> undefined symbol:
> setupUserTextureMatrix__Q24NL3D9CDriverGLUiRQ24NL3D9CMaterial
> WRN32265 common.cpp 401 : Exception will be launched:
> libnel_drv_opengl.so not found
> Abandon

hmm, I can reproduce this problem with today's CVS.
I've tried to modify the source following Loic's advice :

--- src/3d/driver/opengl/driver_opengl_material.cpp.old	Tue Feb 26 18:20:38 2002
+++ src/3d/driver/opengl/driver_opengl_material.cpp	Tue Feb 26 18:20:50 2002
@@ -104,7 +104,7 @@

 // --------------------------------------------------
-inline void CDriverGL::setTextureEnvFunction(uint stage, CMaterial& mat)
+void CDriverGL::setTextureEnvFunction(uint stage, CMaterial& mat)
 {
 	ITexture	*text= mat.getTexture(stage);
 	if(text)
@@ -138,7 +138,7 @@

 //--------------------------------
-inline void CDriverGL::setupUserTextureMatrix(uint numStages, CMaterial& mat)
+void CDriverGL::setupUserTextureMatrix(uint numStages, CMaterial& mat)
 { 
 	if (
 		(_UserTexMatEnabled != 0 && (mat.getFlags() & IDRV_MAT_USER_TEX_MAT_ALL) == 0)		

This fixes the problem for me.

I still do not understand one thing (sorry I learnt some C++ at school,
but I miss some real life experience). If I apply this patch instead :

--- driver_opengl.h.old	Tue Feb 26 17:27:52 2002
+++ driver_opengl.h	Tue Feb 26 18:32:29 2002
@@ -381,10 +381,10 @@
 	virtual void			forceTextureResize(uint divisor);
 
 	/// Setup texture env functions. Used by setupMaterial
-	void				setTextureEnvFunction(uint stage, CMaterial& mat);
+	inline void				setTextureEnvFunction(uint stage, CMaterial& mat);
 
 	/// setup the texture matrix for a given number of stages (starting from 0)
-	void      setupUserTextureMatrix(uint numStages, CMaterial& mat);
+	inline void      setupUserTextureMatrix(uint numStages, CMaterial& mat);
 
 	/// For objects with caustics, setup the first texture (which actually is the one from the material)
 	/*static inline void		setupCausticsFirstTex(const CMaterial &mat);

snowballs still complains.

Any hints ?

-- 
Guillaume Morin <[email-masked]>

                 People get the operating system they deserve.