Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   Unresolved Symbols from C++ Code (http://www.velocityreviews.com/forums/t278254-unresolved-symbols-from-c-code.html)

Scott Brady Drummonds 10-08-2003 07:51 PM

Unresolved Symbols from C++ Code
 
Hi, everyone,

I'm writing a bunch of C++ code that is going to be linked into a program
compiled with gcc (version 2.96; I have no option of changing this version).
My C++ code compiles and executes without error in my C++ test harness.
However, things fail once I move to gcc.

Specifically, I'm getting errors like the following:

vcs.o(.text+0xf): undefined reference to `operator new(unsigned)'
vcs.o(.text+0x49): undefined reference to `operator delete(void*)'
vcs.o(.text+0x5a): undefined reference to `_Unwind_Resume'
vcs.o(.text+0x6b): undefined reference to `operator delete(void*)'
vcs.o(.text+0xa9): undefined reference to `_Unwind_Resume'
vcs.o(.text+0x149): undefined reference to
`std::allocator<char>::allocator()'
vcs.o(.text+0x15f): undefined reference to `std::string::string(char const*,
std::allocator<char> const&)'
vcs.o(.text+0x189): undefined reference to `std::string::~string()'
vcs.o(.text+0x199): undefined reference to `std::string::~string()'
vcs.o(.text+0x1ac): undefined reference to
`std::allocator<char>::~allocator()'
vcs.o(.text+0x1bc): undefined reference to
`std::allocator<char>::~allocator()'
....
/usr/users/home4/sdrummon/src/marple/src/vcs/libVCSMarple.a(vcs.o): In
function `std::map<char const*, int, std::less<char const*>,
std::allocator<std::pair<char const* const, int> > >::map()':
vcs.o(.gnu.linkonce.t._ZNSt3mapIPKciSt4lessIS1_ESa ISt4pairIKS1_iEEEC1Ev+0x4c
): undefined reference to `_Unwind_Resume'
....

I have tried compiling the final binary (which uses both C and C++ compiled
objects) with "-lstdc++". That fixes these issues on gcc 3.1, but causes
the above problems with the 2.96. Perhaps another library needs to be added
to the link line?

Thanks!
Scott

--
Remove ".nospam" from the user ID in my e-mail to reply via e-mail.



Rolf Magnus 10-08-2003 08:15 PM

Re: Unresolved Symbols from C++ Code
 
Scott Brady Drummonds wrote:

> Hi, everyone,
>
> I'm writing a bunch of C++ code that is going to be linked into a
> program compiled with gcc (version 2.96; I have no option of changing
> this version). My C++ code compiles and executes without error in my
> C++ test harness. However, things fail once I move to gcc.
>
> Specifically, I'm getting errors like the following:
>
> vcs.o(.text+0xf): undefined reference to `operator new(unsigned)'
> vcs.o(.text+0x49): undefined reference to `operator delete(void*)'
> vcs.o(.text+0x5a): undefined reference to `_Unwind_Resume'
> vcs.o(.text+0x6b): undefined reference to `operator delete(void*)'
> vcs.o(.text+0xa9): undefined reference to `_Unwind_Resume'
> vcs.o(.text+0x149): undefined reference to
> `std::allocator<char>::allocator()'
> vcs.o(.text+0x15f): undefined reference to `std::string::string(char
> const*, std::allocator<char> const&)'
> vcs.o(.text+0x189): undefined reference to `std::string::~string()'
> vcs.o(.text+0x199): undefined reference to `std::string::~string()'
> vcs.o(.text+0x1ac): undefined reference to
> `std::allocator<char>::~allocator()'
> vcs.o(.text+0x1bc): undefined reference to
> `std::allocator<char>::~allocator()'
> ...
> /usr/users/home4/sdrummon/src/marple/src/vcs/libVCSMarple.a(vcs.o): In
> function `std::map<char const*, int, std::less<char const*>,
> std::allocator<std::pair<char const* const, int> > >::map()':
>

vcs.o(.gnu.linkonce.t._ZNSt3mapIPKciSt4lessIS1_ESa ISt4pairIKS1_iEEEC1E
+0x4c
> ): undefined reference to `_Unwind_Resume'
> ...
>
> I have tried compiling the final binary (which uses both C and C++
> compiled objects) with "-lstdc++".


You mean s/compiling/linking/. Looks to me as if you're linking with gcc
instead of g++.

> That fixes these issues on gcc 3.1, but causes the above problems with

the 2.96. Perhaps another library needs to be added to the link line?

Maybe. Just use g++ for linking. This will automatically added
everything that's needed.


Scott Brady Drummonds 10-08-2003 11:08 PM

Re: Unresolved Symbols from C++ Code
 
Well, after several hours of trial-and-error, I seem to have fixed this
problem. I was compiling the C++ source with g++ 3.1 and that was getting
linked to the C source using gcc 2.96. Early experiments suggest that
backing the C++ compiler back to 2.96 fix the problem.

I know it's academic at this point, but I'd like to know why the version
imcompatibility caused the unresolved symbols mentioned below. Can someone
explain?

Scott

"Scott Brady Drummonds" <scott.b.drummonds.nospam@intel.com> wrote in
message news:bm1ps6$omj$1@news01.intel.com...
> Hi, everyone,
>
> I'm writing a bunch of C++ code that is going to be linked into a program
> compiled with gcc (version 2.96; I have no option of changing this

version).
> My C++ code compiles and executes without error in my C++ test harness.
> However, things fail once I move to gcc.
>
> Specifically, I'm getting errors like the following:
>
> vcs.o(.text+0xf): undefined reference to `operator new(unsigned)'
> vcs.o(.text+0x49): undefined reference to `operator delete(void*)'
> vcs.o(.text+0x5a): undefined reference to `_Unwind_Resume'
> vcs.o(.text+0x6b): undefined reference to `operator delete(void*)'
> vcs.o(.text+0xa9): undefined reference to `_Unwind_Resume'
> vcs.o(.text+0x149): undefined reference to
> `std::allocator<char>::allocator()'
> vcs.o(.text+0x15f): undefined reference to `std::string::string(char

const*,
> std::allocator<char> const&)'
> vcs.o(.text+0x189): undefined reference to `std::string::~string()'
> vcs.o(.text+0x199): undefined reference to `std::string::~string()'
> vcs.o(.text+0x1ac): undefined reference to
> `std::allocator<char>::~allocator()'
> vcs.o(.text+0x1bc): undefined reference to
> `std::allocator<char>::~allocator()'
> ...
> /usr/users/home4/sdrummon/src/marple/src/vcs/libVCSMarple.a(vcs.o): In
> function `std::map<char const*, int, std::less<char const*>,
> std::allocator<std::pair<char const* const, int> > >::map()':
>

vcs.o(.gnu.linkonce.t._ZNSt3mapIPKciSt4lessIS1_ESa ISt4pairIKS1_iEEEC1Ev+0x4c
> ): undefined reference to `_Unwind_Resume'
> ...
>
> I have tried compiling the final binary (which uses both C and C++

compiled
> objects) with "-lstdc++". That fixes these issues on gcc 3.1, but causes
> the above problems with the 2.96. Perhaps another library needs to be

added
> to the link line?
>
> Thanks!
> Scott
>
> --
> Remove ".nospam" from the user ID in my e-mail to reply via e-mail.
>
>




Jonathan Mcdougall 10-08-2003 11:52 PM

Re: Unresolved Symbols from C++ Code
 
> > I'm writing a bunch of C++ code that is going to be linked into a
program
> > compiled with gcc (version 2.96; I have no option of changing this

> version).


<snip>

First, do not top-post. Second, do not include the whole message if you
are only answering to parts of it (what's more, it was _your_ message).

> I know it's academic at this point, but I'd like to know why the version
> imcompatibility caused the unresolved symbols mentioned below. Can

someone
> explain?


No, please post to the approriate forum.

http://www.parashift.com/c++-faq-lit...t.html#faq-5.9


Jonathan




All times are GMT. The time now is 12:16 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.