Boost logo

Boost :

Subject: Re: [boost] [build]Can't build libboost_unit_test_framework-vc90-mt-gdp-1_44.lib with msvc-9 and stlport
From: Vladimir Prus (vladimir_at_[hidden])
Date: 2010-12-11 08:29:40

Joachim Faulhaber wrote:

> Hi Volodya,
> 2010/12/11 Vladimir Prus <vladimir_at_[hidden]>:
>> 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:
>> Note that for that to work, you have to actually specify that you have stlport
>> to Boost.Build. The following doc should help:
>> 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_at_ut_detail_at_unit_test_at_boost@@YA?AV?
> $basic_string_at_DV?$char_traits_at_D@stlpd_std@@V?
> $allocator_at_D@2@@stlpd_std@@V?
> $basic_cstring@$$CBD_at_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_at_unit_test_at_boost@@YAPAVtest_case_at_12@ABV?
> $callback0_at_Uunused@ut_detail_at_unit_test_at_boost@@@12_at_V?
> $basic_cstring@$$CBD_at_12@@Z)

I suppose your application is not built with stlport
debugging. Try setting _STLP_DEBUG macro to 1, and rebuild
your project.

- Volodya

Boost list run by bdawes at, gregod at, cpdaniel at, john at