Page 1 of 1

But CEGUI::LuaScriptModule:LuaScriptModule() is defined!

Posted: Sun Sep 07, 2008 04:52
by OffbeatPatriot
I'm kind of playing around with the demos in CEGUI, thing were going smooth until I tried to get into Lua. I keep getting this error.

Code: Select all

/tmp/ccuO9gq6.o: In function `main':
test.cpp:(.text+0xa74): undefined reference to `CEGUI::LuaScriptModule::LuaScriptModule()'
collect2: ld returned 1 exit status


when I run this code, this is just the main method and include stuff in my code.

Code: Select all

#include <stdio.h>
#include <stdlib.h>
 
#include <SDL/SDL.h>

#include <CEGUILua.h>
 
#include <CEGUI.h>
#include <CEGUIDefaultResourceProvider.h>
#include <RendererModules/OpenGLGUIRenderer/openglrenderer.h>
 
#include <GL/gl.h>
#include <GL/glu.h>

using namespace CEGUI;

OpenGLRenderer *renderer;
LuaScriptModule* script_module;
Window* myRoot;

int main (int argc, char **argv)
{
   SDL_Surface * screen;
   atexit (SDL_Quit);
   SDL_Init (SDL_INIT_VIDEO);
   screen = SDL_SetVideoMode (600, 480, 0, SDL_OPENGL);
   if (screen == NULL) {
      fprintf (stderr, "Video Initialization Error: %s\n", SDL_GetError ());
      exit (1);
   }
   renderer = new OpenGLRenderer (0, 600, 480, 0);
   script_module = new LuaScriptModule();//PROBLEM SEEMS TO BE WITH THIS
   new CEGUI::System (renderer);
   CEGUI::System::getSingleton().setScriptingModule(script_module);

   CEGUI::DefaultResourceProvider* rp = static_cast<CEGUI::DefaultResourceProvider*>
     (CEGUI::System::getSingleton().getResourceProvider());

   rp->setResourceGroupDirectory("schemes", "./datafiles/schemes/");
   rp->setResourceGroupDirectory("imagesets", "./datafiles/imagesets/");
   rp->setResourceGroupDirectory("fonts", "./datafiles/fonts/");
   rp->setResourceGroupDirectory("layouts", "./datafiles/layouts/");
   rp->setResourceGroupDirectory("looknfeels", "./datafiles/looknfeel/");
   rp->setResourceGroupDirectory("lua_scripts", "./datafiles/lua_scripts/");
   
   Imageset::setDefaultResourceGroup("imagesets");
   Font::setDefaultResourceGroup("fonts");
   Scheme::setDefaultResourceGroup("schemes");
   WidgetLookManager::setDefaultResourceGroup("looknfeels");
   WindowManager::setDefaultResourceGroup("layouts");
   ScriptModule::setDefaultResourceGroup("lua_scripts");

   CEGUI::SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");
   if(! CEGUI::FontManager::getSingleton().isFontPresent( "Commonwealth-10" ) )
     CEGUI::FontManager::getSingleton().createFont( "Commonwealth-10.font" );
   System::getSingleton().setDefaultMouseCursor( "TaharezLook", "MouseArrow" );
   System::getSingleton().setDefaultTooltip( "TaharezLook/Tooltip" );
   System::getSingleton().setDefaultMouseCursor( "TaharezLook", "MouseArrow" );

   myRoot = WindowManager::getSingleton().loadWindowLayout( "Demo8.layout" );
  System::getSingleton().setGUISheet( myRoot );


   SDL_ShowCursor (SDL_DISABLE);
   SDL_EnableUNICODE (1);
   SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
   main_loop();
}


and I compile it in the terminal with this command:

Code: Select all

gcc test.cpp -I/usr/local/include/CEGUI/ -lSDL -lGL -lGLU -lCEGUIBase -lCEGUIOpenGLRenderer

Posted: Mon Sep 08, 2008 08:58
by CrazyEddie
Hi,

When using the Lua module, you also need to link with its library (and maybe also the main lua lib(s) also).

IIRC the lua script module name is libCEGUILuaScriptModule.so, and as such a '-lCEGUILuaScriptModule' should get you going (as stated, you might also need -llua and maybe -llualib. Names may vary by system).

HTH

CE.

Posted: Wed Sep 10, 2008 05:17
by OffbeatPatriot
That worked, the program starts up now, thanks.