Game Development Community

TGE 1.4 HEAD Linking Error on guiDirectoryFileListCtrl etc

by Kuju Manila · in Torque Game Engine · 09/25/2006 (1:03 am) · 8 replies

I can't figure out what is the real problem with this:

Quote:
--> Linking out.GCC4.DEBUG/torqueDemo_DEBUG.bin
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj: In function 'cGuiDirectoryFileListCtrlgetSelectedFiles':
gui/controls/guiDirectoryFileListCtrl.cc:120: undefined reference to 'GuiListBoxCtrl::getSelectedItems(Vector&)'
gui/controls/guiDirectoryFileListCtrl.cc:133: undefined reference to 'GuiListBoxCtrl::getItemText(int)'
gui/controls/guiDirectoryFileListCtrl.cc:145: undefined reference to 'GuiListBoxCtrl::getItemText(int)'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj: In function 'GuiDirectoryFileListCtrl::getSelectedFileName()':
gui/controls/guiDirectoryFileListCtrl.cc:160: undefined reference to 'GuiListBoxCtrl::getSelectedItem()'
gui/controls/guiDirectoryFileListCtrl.cc:164: undefined reference to 'GuiListBoxCtrl::getItemText(int)'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj: In function 'GuiDirectoryFileListCtrl::openDirectory()':
gui/controls/guiDirectoryFileListCtrl.cc:37: undefined reference to 'GuiListBoxCtrl::clearItems()'
gui/controls/guiDirectoryFileListCtrl.cc:48: undefined reference to 'GuiListBoxCtrl::addItem(char const*, void*)'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj: In function 'GuiDirectoryFileListCtrl::onMouseDown(GuiEvent const&)':
gui/controls/guiDirectoryFileListCtrl.cc:23: undefined reference to 'GuiListBoxCtrl::onMouseDown(GuiEvent const&)'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj: In function 'GuiDirectoryFileListCtrl::onWake()':
gui/controls/guiDirectoryFileListCtrl.cc:13: undefined reference to 'GuiListBoxCtrl::onWake()'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj: In function 'GuiDirectoryFileListCtrl':
gui/controls/guiDirectoryFileListCtrl.cc:7: undefined reference to 'GuiListBoxCtrl::GuiListBoxCtrl()'
gui/controls/guiDirectoryFileListCtrl.cc:7: undefined reference to 'GuiListBoxCtrl::GuiListBoxCtrl()'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj: In function 'GuiDirectoryFileListCtrl::getParentStaticClassRep()':
gui/controls/guiDirectoryFileListCtrl.cc:5: undefined reference to 'GuiListBoxCtrl::getStaticClassRep()'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj: In function '~GuiDirectoryFileListCtrl':
./gui/controls/guiDirectoryFileListCtrl.h:13: undefined reference to 'GuiListBoxCtrl::~GuiListBoxCtrl()'
./gui/controls/guiDirectoryFileListCtrl.h:13: undefined reference to 'GuiListBoxCtrl::~GuiListBoxCtrl()'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj: In function 'ConcreteClassRep::init() const':
./console/consoleObject.h:361: undefined reference to 'GuiListBoxCtrl::initPersistFields()'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj:(.rodata._ZTV24GuiDirectoryFileListCtrl[vtable for GuiDirectoryFileListCtrl]+0xa4): undefined reference to 'GuiListBoxCtrl::parentResized(Point2I const&, Point2I const&)'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj:(.rodata._ZTV24GuiDirectoryFileListCtrl[vtable for GuiDirectoryFileListCtrl]+0xa8): undefined reference to 'GuiListBoxCtrl::onRender(Point2I, RectI const&)'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj:(.rodata._ZTV24GuiDirectoryFileListCtrl[vtable for GuiDirectoryFileListCtrl]+0x170): undefined reference to 'GuiListBoxCtrl::onRenderItem(RectI, GuiListBoxCtrl::LBItem*)'
out.GCC4.DEBUG/gui/controls/guiDirectoryFileListCtrl.obj:(.rodata._ZTI24GuiDirectoryFileListCtrl[typeinfo for GuiDirectoryFileListCtrl]+0x8): undefined reference to 'typeinfo for GuiListBoxCtrl'
collect2: ld returned 1 exit status
make[1]: *** [out.GCC4.DEBUG/torqueDemo_DEBUG.bin] Error 1
make: *** [default] Error 2

#1
09/25/2006 (1:04 am)
I examined the code, but I'm new to Torque's architecture what I see so far is that the functions guiDirectoryFileListCtrl are supposed to inherit from guiListBoxCtrl are not referenced for some reason. Like the error messages say it just cannot find the references, or am I missing some libraries again?

Thanks.
#2
09/25/2006 (4:54 pm)
By the way, I'm using GCC4 on SuSE 10.1 x86
#3
09/25/2006 (5:54 pm)
If you look back in the compile log, did the GuiListBoxControl file fail to build for some reason?
#4
09/25/2006 (7:00 pm)
None. The suspected files compiled fine with just the "No newline at end of file" warnings.
#5
09/25/2006 (7:28 pm)
Actually, building from HEAD, I got that same error just now. I wonder if it's a link order thing (UNIX linkers being just a thin wrapper on top of "cat" after all :-)

I'll look at it some more, as I've decided to try to get Linux building a shot.
#6
09/25/2006 (7:39 pm)
OK, that was easy, once I figured out how the make files tie together.
The file guiListBoxCtrl.cc isn't actually included in the targets.torque.mk file.
This patch ought to set you up:

Index: engine/targets.torque.mk
===================================================================
--- engine/targets.torque.mk    (revision 618)
+++ engine/targets.torque.mk    (working copy)
@@ -155,8 +155,9 @@
        gui/controls/guiTextListCtrl.cc \
        gui/controls/guiTreeViewCtrl.cc \
        gui/controls/guiTabPageCtrl.cc \
-        gui/controls/guiDirectoryFileListCtrl.cc \
-        gui/controls/guiDirectoryTreeCtrl.cc \
+  gui/controls/guiListBoxCtrl.cc \
+  gui/controls/guiDirectoryFileListCtrl.cc \
+  gui/controls/guiDirectoryTreeCtrl.cc \
        gui/core/guiArrayCtrl.cc \
        gui/core/guiCanvas.cc \
        gui/core/guiControl.cc \
#7
09/25/2006 (7:48 pm)
Oh great. I'll try that ;)
#8
09/25/2006 (8:03 pm)
Oh my, this is so sweet! That really fixed it. Thanks J "hplus" W!
The better thing is, It's finally the last error. I got a binary compiled!