On Nov 14, 2:28 pm, "Jim Langston" <tazmas...@rocketmail.com> wrote:
<walke...@gmail.com> wrote in message
news:1195069578.009394.179370@y27g2000pre.googlegroups.com...
I'm working on modifying an open source project that uses, among
other
things, SDL and CEGui. I went about it the smart way. I set up my
mingw/msys/code::blocks environment first and then, one at a time, I
went through all of the dependencies, compiling example programs with
each one to make sure that they worked.
Unfortunately, I am receiving linking errors with CEGUI, and I have
no
idea how to resolve them now. To compound the issue, the
registration
portion of their forums is broken and no one is responding to my
request for manual registration. The errors I'm receiving are like
this:
--------
obj\Release\src\core\editor.o:editor.cpp:(.text+0x157): undefined
reference to `_imp___ZN5CEGUI6StringD1Ev'
obj\Release\src\core\editor.o:editor.cpp:(.text+0x178): more
undefined
references to `_imp___ZN5CEGUI6StringD1Ev' follow
obj\Release\src\core\editor.o:editor.cpp:(.text+0x578): undefined
reference to `_imp___ZN5CEGUI6colourC1ERKS0_'
--------
I know that this means that the linker cannot find the symbols that
the object file is referring to. I know that these symbols don't
mean
anything right away to someone who doesn't know the libraries, but,
since I can't reach anyone who DOES know, what I'm wondering is if
there isn't some system I can use to track down these errors myself?
Perhaps some way I can convert these symbol names into something
useful that can help me track down what I need to be including? I
know that linking order matters, and I think I know why, but I was
wondering if someone could spell it out for me as well so I know that
I have it right.
Read up on name mangling. http://en.wikipedia.org/wiki/Name_mangling
Most likely these would be calls to functions or methods named String
and
colour. Search for those in the code.
Okay, so from this mangled name, I can tell that it's imported from a
library, namespace: CEGUI, function name: String and that its return
type is void. I don't know what D1 refers to, but I think the problem
could be that these lib files are from an SDK that was built for
visual Studio. Is it possible then that there is a difference in name-
mangling convention here? If so, is there anything I can do to
resolve it besides recompiling the CEGUI library in mingw?