
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