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: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2010-12-12 10:35:36


2010/12/11 Vladimir Prus <vladimir_at_[hidden]>:
> 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
[..]
>> 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_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.

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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk