[build]Can't build libboost_unit_test_framework-vc90-mt-gdp-1_44.lib with msvc-9 and stlport

Hi all, sorry for posting this twice. But on boost-build I have to wait for moderator approval and, well, I'm a little impatient :-/ which is probably normal for little nasty problems like this one: I have built stlport-5.2 and tried to compile and link projects with it using msvc-9. Now the linker wants to see libboost_unit_test_framework-vc90-mt-gdp-1_44.lib instead of libboost_unit_test_framework-vc90-mt-gd-1_44.lib It wants the gd*p* version. So I tried to build it using bjam toolset=msvc-9.0~stlport5.2 --with-test --build-type=complete stage This generated new lib files but not the desired one. Could someone explain what the gd*p* suffix stands for and how I can build this lib-file with bjam. Thanx, Joachim

Joachim Faulhaber wrote:
Hi all,
sorry for posting this twice. But on boost-build I have to wait for moderator approval and, well, I'm a little impatient :-/ which is probably normal for little nasty problems like this one:
I have built stlport-5.2 and tried to compile and link projects with it using msvc-9. Now the linker wants to see
libboost_unit_test_framework-vc90-mt-gdp-1_44.lib instead of libboost_unit_test_framework-vc90-mt-gd-1_44.lib
It wants the gd*p* version. So I tried to build it using
bjam toolset=msvc-9.0~stlport5.2 --with-test --build-type=complete stage
This generated new lib files but not the desired one. Could someone explain what the gd*p* suffix stands for and how I can build this lib-file with bjam.
I am afraid I don't remember what this suffix stands for, nor how can you build it with Boost.Build. However, I recall there's a table somewhere. Ah, right: http://www.boost.org/doc/libs/1_45_0/more/getting_started/windows.html#libra... Note that for that to work, you have to actually specify that you have stlport to Boost.Build. The following doc should help: http://www.boost.org/boost-build2/doc/html/bbv2/overview/configuration.html http://www.boost.org/boost-build2/doc/html/bbv2/reference/tools.html#bbv2.re... HTH, Volodya

Hi Volodya, 2010/12/11 Vladimir Prus <vladimir@codesourcery.com>:
Joachim Faulhaber wrote:
I have built stlport-5.2 and tried to compile and link projects with it using msvc-9. Now the linker wants to see
libboost_unit_test_framework-vc90-mt-gdp-1_44.lib instead of libboost_unit_test_framework-vc90-mt-gd-1_44.lib
It wants the gd*p* version. So I tried to build it using
bjam toolset=msvc-9.0~stlport5.2 --with-test --build-type=complete stage
This generated new lib files but not the desired one. Could someone explain what the gd*p* suffix stands for and how I can build this lib-file with bjam.
I am afraid I don't remember what this suffix stands for, nor how can you build it with Boost.Build. However, I recall there's a table somewhere. Ah, right:
http://www.boost.org/doc/libs/1_45_0/more/getting_started/windows.html#libra...
Note that for that to work, you have to actually specify that you have stlport to Boost.Build. The following doc should help:
http://www.boost.org/boost-build2/doc/html/bbv2/overview/configuration.html http://www.boost.org/boost-build2/doc/html/bbv2/reference/tools.html#bbv2.re...
HTH,
Thank you, that helped a lot :) I am now able to compile and run test with bjam using stlport. Unfortunately there are still two nasty problems. (1) For some but not all the test projects I get the error failed to write output file: '<path to bin.v2 subdirectory>\<test-target>.obj.rsp'! bjam toolset... --clean did not help nor manually deleting bin.v2-subdirectories. Seems like projects with longer names are affected. (2) When compiling with the ms-workbench, the linker now finds the right lib-files but I still get an unresolved reference: class stlpd_std::basic_string <char,class stlpd_std::char_traits<char>, class stlpd_std::allocator<char> > __cdecl boost::unit_test::ut_detail::normalize_test_case_name (class boost::unit_test::basic_cstring<char const >)" (?normalize_test_case_name@ut_detail@unit_test@boost@@YA?AV? $basic_string@DV?$char_traits@D@stlpd_std@@V? $allocator@D@2@@stlpd_std@@V? $basic_cstring@$$CBD@23@@Z) referenced in function "class boost::unit_test::test_case * __cdecl boost::unit_test::make_test_case (class boost::unit_test::callback0 <struct boost::unit_test::ut_detail::unused> const &, class boost::unit_test::basic_cstring<char const >)" (?make_test_case@unit_test@boost@@YAPAVtest_case@12@ABV? $callback0@Uunused@ut_detail@unit_test@boost@@@12@V? $basic_cstring@$$CBD@12@@Z) In both instances I have no idea what to do. Any help appreciated. Thanx, Joachim

Joachim Faulhaber wrote:
Hi Volodya,
2010/12/11 Vladimir Prus <vladimir@codesourcery.com>:
Joachim Faulhaber wrote:
I have built stlport-5.2 and tried to compile and link projects with it using msvc-9. Now the linker wants to see
libboost_unit_test_framework-vc90-mt-gdp-1_44.lib instead of libboost_unit_test_framework-vc90-mt-gd-1_44.lib
It wants the gd*p* version. So I tried to build it using
bjam toolset=msvc-9.0~stlport5.2 --with-test --build-type=complete stage
This generated new lib files but not the desired one. Could someone explain what the gd*p* suffix stands for and how I can build this lib-file with bjam.
I am afraid I don't remember what this suffix stands for, nor how can you build it with Boost.Build. However, I recall there's a table somewhere. Ah, right:
http://www.boost.org/doc/libs/1_45_0/more/getting_started/windows.html#libra...
Note that for that to work, you have to actually specify that you have stlport to Boost.Build. The following doc should help:
http://www.boost.org/boost-build2/doc/html/bbv2/overview/configuration.html http://www.boost.org/boost- build2/doc/html/bbv2/reference/tools.html#bbv2.reference.tools.libraries.stlport
HTH,
Thank you, that helped a lot :) I am now able to compile and run test with bjam using stlport.
Unfortunately there are still two nasty problems.
(1) For some but not all the test projects I get the error
failed to write output file: '<path to bin.v2 subdirectory>\<test-target>.obj.rsp'!
bjam toolset... --clean
did not help nor manually deleting bin.v2-subdirectories. Seems like projects with longer names are affected.
If paths with longer names are affected, you might be running into a limitations of your OS. Can you try this: bjam --hash <other options you use now> You need to use bjam that is included in 1.45, as opposed to whatever other version you might have.
(2) When compiling with the ms-workbench,
What is "ms-workbench"?
the linker now finds the right lib-files but I still get an unresolved reference:
class stlpd_std::basic_string <char,class stlpd_std::char_traits<char>, class stlpd_std::allocator<char> > __cdecl boost::unit_test::ut_detail::normalize_test_case_name (class boost::unit_test::basic_cstring<char const >)" (?normalize_test_case_name@ut_detail@unit_test@boost@@YA?AV? $basic_string@DV?$char_traits@D@stlpd_std@@V? $allocator@D@2@@stlpd_std@@V? $basic_cstring@$$CBD@23@@Z) referenced in function "class boost::unit_test::test_case * __cdecl boost::unit_test::make_test_case (class boost::unit_test::callback0 <struct boost::unit_test::ut_detail::unused> const &, class boost::unit_test::basic_cstring<char const >)" (?make_test_case@unit_test@boost@@YAPAVtest_case@12@ABV? $callback0@Uunused@ut_detail@unit_test@boost@@@12@V? $basic_cstring@$$CBD@12@@Z)
I suppose your application is not built with stlport debugging. Try setting _STLP_DEBUG macro to 1, and rebuild your project. - Volodya

2010/12/11 Vladimir Prus <vladimir@codesourcery.com>:
Joachim Faulhaber wrote:
Hi Volodya,
2010/12/11 Vladimir Prus <vladimir@codesourcery.com>:
Joachim Faulhaber wrote:
I have built stlport-5.2 and tried to compile and link projects with [..] Thank you, that helped a lot :) I am now able to compile and run test with bjam using stlport.
Unfortunately there are still two nasty problems.
(1) For some but not all the test projects I get the error
failed to write output file: '<path to bin.v2 subdirectory>\<test-target>.obj.rsp'! Seems like projects with longer names are affected.
If paths with longer names are affected, you might be running into a limitations of your OS.
Yes, you are right, there still seems to be the limitation to the "old" MAX_PATH constant.
Can you try this:
bjam --hash <other options you use now>
You need to use bjam that is included in 1.45, as opposed to whatever other version you might have.
Thank you again, this worked beautifully :) Boost provides surprising solutions even to anachronistic problems caused by M$ ;-)
(2) When compiling with the ms-workbench,
What is "ms-workbench"?
I meant MS IDE / Visual Studio
the linker now finds the right lib-files but I still get an unresolved reference:
class stlpd_std::basic_string <char,class stlpd_std::char_traits<char>, class stlpd_std::allocator<char> > __cdecl boost::unit_test::ut_detail::normalize_test_case_name (class boost::unit_test::basic_cstring<char const >)" (?normalize_test_case_name@ut_detail@unit_test@boost@@YA?AV? $basic_string@DV?$char_traits@D@stlpd_std@@V? $allocator@D@2@@stlpd_std@@V? $basic_cstring@$$CBD@23@@Z) referenced in function "class boost::unit_test::test_case * __cdecl boost::unit_test::make_test_case (class boost::unit_test::callback0 <struct boost::unit_test::ut_detail::unused> const &, class boost::unit_test::basic_cstring<char const >)" (?make_test_case@unit_test@boost@@YAPAVtest_case@12@ABV? $callback0@Uunused@ut_detail@unit_test@boost@@@12@V? $basic_cstring@$$CBD@12@@Z)
I suppose your application is not built with stlport debugging. Try setting _STLP_DEBUG macro to 1, and rebuild your project.
I already compiled the code with this macro... The problem must be something else, can see it though :-( Some more informations. (1) Everything compiles, links and runs with bjam in different variants. (2) Everyhing compiles, links and runs with the IDE, when using the STL from MS. (3) Projects that do not use compiled boost-library binaries compile, link and run using stlport (4) All static boost library binaries are generated to <BOOST_ROOT>/stage/lib using bjam toolset=msvc-9.0~stlport5.2 -a stdlib=stlport --with-date_time --with-test --build-type=complete stage obviously the libs are found there using relative path in the project settings: Additional library directories: ../../../../stage/lib; In addition these paths are set for the IDE via the tools-options menu: tools/options/project settings/vc++ directories: library files: <my-stlport-location>\STLport-5.2.1\lib include files:<my-stlport-location>\STLport-5.2.1\stlport the generated command lines are: compile: /Od /I "../../../../" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_STLP_DEBUG=1" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"../../../../bin/obj/vc9_fastest_interval_map/debug/\\" /Fd"../../../../bin/obj/vc9_fastest_interval_map/debug/\vc90.pdb" /W3 /nologo /c /ZI /TP /errorReport:prompt link: /OUT:"../../../../bin/debug/vc9_fastest_interval_map.exe" /INCREMENTAL /NOLOGO /LIBPATH:"../../../../stage/lib" /MANIFEST /MANIFESTFILE:"../../../../bin/obj/vc9_fastest_interval_map/debug/\vc9_fastest_interval_map.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"c:\cygwin\home\jofa\dev\boost_sandbox\icl\bin\debug\vc9_fastest_interval_map.pdb" /SUBSYSTEM:CONSOLE /DYNAMICBASE:NO /MACHINE:X86 /ERRORREPORT:PROMPT stlportstld.5.2.lib stlportd.5.2.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Any help appreciated! Thanks again, Joachim
participants (2)
-
Joachim Faulhaber
-
Vladimir Prus