Boost logo

Boost Users :

From: Jason Ivey (jasonivey_at_[hidden])
Date: 2007-08-15 13:29:05


I am attempting to compile and link a small test application using
STLPort_5.1.3, boost_1_34_1 and MSVC8 sp1. Everything works fine when I
don't have to link against any boost libraries. To test linking against the
boost static libraries I wrote a simple little test app that used the
boost::regex library and ran into errors. I am not completely sure that
this is a boost issue but since I can compile and link programs without any
problems that don't use boost binaries I wasn't sure of who else to turn
to. The linker error I am getting is:

1>LINK : fatal error LNK1104: cannot open file 'stlportstld_x.5.1.lib'

The problem is that all of the stlport libraries are named
stlportstld.5.1.lib or similar. I did try to just rename the library to
make it match but, of course, I got a boat load of unresolved external
linker errors pointing to names such as "stlpdx_std::basic_string." Looking
at a dumpbin output of the actual regex library it is linking against,
libboost_regex-vc80-mt-sgdp-1_34_1.lib, I found linker directives of the
form:

   /DEFAULTLIB:"stlportstld_x.5.1.lib"
   /DEFAULTLIB:"libcpmtd"
   /DEFAULTLIB:"LIBCMTD"
   /DEFAULTLIB:"OLDNAMES"

I couldn't find anywhere that boost had put those directives in the
libraries but I could be missing something so I also did a dumpbin of one of
the stlport libraries, stlportd_static.5.1.lib, and only found the following
linker directives:

   /DEFAULTLIB:"LIBCMTD"
   /DEFAULTLIB:"OLDNAMES"

I have to believe there are at least a few companies out there who have
replaced the shipping MSVC STL for testing purposes, if for no other reason,
and are also using Boost so hopefully I'm just missing something obvious.
Below are the steps I followed to compile both sets of libraries and the
test application. Let me know if anything appears to be off or if there is
simply a better/easier way.

Thanks,

Jason Ivey

Open command prompt and run:
"%VS80COMNTOOLS%\vsvars32.bat"

STLPort_5.1.3
build\lib\configure -c msvc8
nmake /fmsvc.mak install

Boost_1_34_1
edit tools\build\v2\user-config.jam
    added line 45 with
    using stlport : : d:\\build\\stlport\\stlport d:\\build\\stlport\\lib ;
bjam --toolset=msvc stdlib=stlport --with-regex stage

Build Test Application
set include=d:\build\stlport\stlport;D:\build\boost_1_34_1;%include%
set lib=d:\build\stlport\lib;D:\build\boost_1_34_1\stage\lib;%lib%
call "%VS80COMNTOOLS%\..\IDE\devenv.exe" /useenv



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net