Opened 12 years ago

Closed 12 years ago

#4901 closed Bugs (wontfix)

boost_serialization link error under msvc 9.0 & 8.0

Reported by: anonymous Owned by: Robert Ramey
Milestone: To Be Determined Component: serialization
Version: Boost 1.45.0 Severity: Problem
Keywords: Cc:

Description

I`m trying to compile small program using boost_serialization under msvc. I have three simple cases:

1) FAILED!
Jamroot:

using msvc ;

use-project boost : "C:\\Boost\\boost_1_45_0" ;

exe serial : serial.cpp /boost/serialization//boost_serialization ;

Serial.exe.rsp:

"bin\msvc-9.0\debug\threading-multi\serial.obj" 
"C:\Boost\boost_1_45_0\bin.v2\libs\serialization\build\msvc-9.0\debug\threading-multi\boost_serialization-vc90-mt-gd-1_45.lib"    

All full paths are exist!

msvc.link.dll C:\Boost\boost_1_45_0\bin.v2\libs\serialization\build\msvc-9.0\debug\threading-multi\boost_serialization-vc90-mt-gd-1_45.dll
   Creating library C:\Boost\boost_1_45_0\bin.v2\libs\serialization\build\msvc-9.0\debug\threading-multi\boost_serialization-vc90-mt-gd-1_45.lib and objec
t C:\Boost\boost_1_45_0\bin.v2\libs\serialization\build\msvc-9.0\debug\threading-multi\boost_serialization-vc90-mt-gd-1_45.exp
msvc.manifest.dll C:\Boost\boost_1_45_0\bin.v2\libs\serialization\build\msvc-9.0\debug\threading-multi\boost_serialization-vc90-mt-gd-1_45.dll
msvc.link bin\msvc-9.0\debug\threading-multi\serial.exe
LINK : fatal error LNK1104: cannot open file 'libboost_serialization-vc90-mt-gd-1_45.lib'

        call "c:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 >nul
link /NOLOGO /INCREMENTAL:NO /DEBUG /MACHINE:X86 /subsystem:console /out:"bin\msvc-9.0\debug\threading-multi\serial.exe"   @"bin\msvc-9.0\debug\threading-
multi\serial.exe.rsp"
        if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%

...failed msvc.link bin\msvc-9.0\debug\threading-multi\serial.exe bin\msvc-9.0\debug\threading-multi\serial.pdb...
...failed updating 2 targets...
...updated 34 targets...

2) FAILED!
Jamroot:
using msvc ;

use-project boost : "C:\\Boost\\boost_1_45_0" ;

exe serial : serial.cpp /boost/serialization//boost_serialization : 
<link>static <runtime-link>static ;

All paths from serial.exe.rsp are exist too.

...
compile-c-c++ C:\Boost\boost_1_45_0\bin.v2\libs\serialization\build\msvc-9.0\debug\link-static\runtime-link-static\xml_archive_exception.obj
xml_archive_exception.cpp
compile-c-c++ C:\Boost\boost_1_45_0\bin.v2\libs\serialization\build\msvc-9.0\debug\link-static\runtime-link-static\shared_ptr_helper.obj
shared_ptr_helper.cpp
msvc.archive C:\Boost\boost_1_45_0\bin.v2\libs\serialization\build\msvc-9.0\debug\link-static\runtime-link-static\libboost_serialization-vc90-sgd-1_45.lib

stl_port.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
msvc.link bin\msvc-9.0\debug\link-static\runtime-link-static\serial.exe
LINK : fatal error LNK1104: cannot open file 'libboost_serialization-vc90-mt-sgd-1_45.lib'

        call "c:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 >nul
link /NOLOGO /INCREMENTAL:NO /DEBUG /MACHINE:X86 /subsystem:console /out:"bin\msvc-9.0\debug\link-static\runtime-link-static\serial.exe"   @"bin\msvc-9.0\
debug\link-static\runtime-link-static\serial.exe.rsp"
        if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%

...failed msvc.link bin\msvc-9.0\debug\link-static\runtime-link-static\serial.exe bin\msvc-9.0\debug\link-static\runtime-link-static\serial.pdb...
...failed updating 2 targets...
...updated 32 targets...

3) WORKS!

using msvc ;

use-project boost : "C:\\Boost\\boost_1_45_0" ;

exe serial : serial.cpp /boost/serialization//boost_serialization 
link<static> ;

So where is problem? Is only one possible configuration for building serialization library under msvc?

I can link with other libraries, boost_program_options for instance, but not with boost_serialization.

using msvc ;

use-project boost : "C:\\Boost\\boost_1_45_0" ;

exe main : main.cpp /boost/program_options//boost_program_options ;

Change History (7)

comment:1 by anonymous, 12 years ago

Summary: boost_serialization link error under msvc 9.0boost_serialization link error under msvc 9.0 & 8.0

Same problems with msvc 8.0 LINK : fatal error LNK1104: cannot open file 'libboost_serialization-vc80-mt-gd-1_45.lib'

comment:2 by Steven Watanabe, 12 years ago

You need to add <define>BOOST_ALL_NO_LIB to disable auto-linking. I think other libraries probably already disable auto-linking in their usage requirements.

comment:3 by anonymous, 12 years ago

Thank you. It works! I`m gonna readdress this issue back to serialization library.

comment:4 by anonymous, 12 years ago

Corresponding issue #4893

comment:5 by Vicente Botet <vicente.botet@…>, 12 years ago

Component: Building Boostserialization
Owner: set to Robert Ramey

Moved to Serialization to add <define>BOOST_ALL_NO_LIB in the usage requirements.

comment:6 by Robert Ramey, 12 years ago

Sorry, I don't get what I'm expected to do here.

Robert Ramey

comment:7 by Robert Ramey, 12 years ago

Resolution: wontfix
Status: newclosed
Note: See TracTickets for help on using tickets.