LNK1104: Libcimt - Finding references to Old STL vs. New STL in libs

L

Lance

I'm trying to migrate a VC++ 6 project to VS .NET 2003, and have hit the
LNK1104 - libcimt.lib problem where there's some code still referencing the
old STL library.

I've verified all our code uses the new STL headers.

Can I use "dumpbin /symbols" to check each 3rd party library we use to see
if it uses the old vs. new STL library ? How do I tell if the references
are for the old vs new STL?

Thanks for any pointers....
-Lance
 
J

Jochen Kalmbach

Lance said:
I'm trying to migrate a VC++ 6 project to VS .NET 2003, and have hit
the LNK1104 - libcimt.lib problem where there's some code still
referencing the old STL library.

I've verified all our code uses the new STL headers.

Can I use "dumpbin /symbols" to check each 3rd party library we use to
see if it uses the old vs. new STL library ? How do I tell if the
references are for the old vs new STL?

LNK1104: cannot open file 'filename' !?

Why not use the /VERBOSE parameter in the linker !?
This will also let you find the depending LIB/OBJ.

--
Greetings
Jochen

Do you need a memory-leak finder ?
http://www.codeproject.com/useritems/leakfinder.asp
 
C

Carl Daniel [VC++ MVP]

Lance said:
I'm trying to migrate a VC++ 6 project to VS .NET 2003, and have hit
the LNK1104 - libcimt.lib problem where there's some code still
referencing the old STL library.

I've verified all our code uses the new STL headers.

Can I use "dumpbin /symbols" to check each 3rd party library we use
to see if it uses the old vs. new STL library ? How do I tell if
the references are for the old vs new STL?

Everything in the C++ standard library is in the std namespace, while
"classic iostreams" (aka libcimt.lib) is in the global namespace. Further,
standard iostreams are templates, while classic iostreams are not.

Suggestion: do a dumpbin/symbols on libcimt.lib to see what they look like:
you should be able to easily pick them out from standard iostreams because,
for example, there's no class iostream in the standard library - instead,
there's a typedef basic_iostream<...> iostream.

-cd
 
L

Lance

Carl -

Thanks. I'll give that a try.

-Lance

Carl Daniel said:
Everything in the C++ standard library is in the std namespace, while
"classic iostreams" (aka libcimt.lib) is in the global namespace. Further,
standard iostreams are templates, while classic iostreams are not.

Suggestion: do a dumpbin/symbols on libcimt.lib to see what they look like:
you should be able to easily pick them out from standard iostreams because,
for example, there's no class iostream in the standard library - instead,
there's a typedef basic_iostream<...> iostream.

-cd
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top