Opened 12 years ago
Closed 12 years ago
#4893 closed Bugs (invalid)
boost_serialization link error under msvc 9.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?
Change History (6)
comment:1 by , 12 years ago
Summary: | boost_serialization link error under msvc 8.0 → boost_serialization link error under msvc 9.0 |
---|
comment:2 by , 12 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
comment:3 by , 12 years ago
I can link with other libraries, boost_program_options for instance, but not with boost_serialization. So I think it`s a serialization library problem. Am I right?
comment:4 by , 12 years ago
Resolution: | invalid |
---|---|
Status: | closed → reopened |
I have tested thread, regex, program options and other libs. Only the serialization lib doesn`t link.
P.S. With msvc 8.0 I have the same results.
comment:5 by , 12 years ago
I submitted this issue to boost.build (#4901) and steven_watanabe said:
"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."
I checked. It works. So it`s going to be a serialization lib issue.
comment:6 by , 12 years ago
Resolution: | → invalid |
---|---|
Status: | reopened → closed |
1) It looks like your creating a DLL boost_serialization-vc90-mt-gd-1_45.dll with import library boost_serialization-vc90-mt-gd-1_45.lib but trying to link statically with it libboost_serialization-vc90-mt-gd-1_45.lib. This can never work and that's why the names are different - just to prevent this from being possible.
2) This is better, you're creating a static library libboost_serialization-vc90-sgd-1_45.lib as a single threaded library, but linking a main program compiled with multi-threaded code. That's why it's looking for with a libboost_serialization-vc90-mt-sgd-1_45.lib) This can work, but it also crash for no apparent reason. The auto link in preventing your from creating this type of problem.
3) This overrides all the checking above so your application might SEEM to work but can fail in a catestrophic and unpredictable way.
Suggestion. Make sure your main program and the libraries are built with the same settings.
I don't know why the other libraries worked - maybe the main program had different settings or maybe the library was built with different settings. I can't speak to that.
Robert Ramey
I'm pretty sure this isn't a serialization library question but rather a bjam question. So I don't think I can help here. That is, I don't think this can be addressed from the serialization library source code. Try posting this on the boost/build list.
Robert Ramey