Невозможно собрать Boost с библиотекой STLport - PullRequest
7 голосов
/ 04 октября 2011

Я собираю boost 1.48.0 с STLport 5.2.1 на Windows, используя MSVC 7.1, и вот командная строка, которую я запускаю:

b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=debug stdlib=stlport --layout=tagged stage

Мой user-config.jam настроен так:

using msvc : 7.1 ;
using stlport : 5.2.1 : C:/Code/third_party_source/STLport-5.2.1/stlport : C:/Code/third_party_source/STLport-5.2.1/lib ;

Я получаю несколько ошибок компоновщика, связанных с STLport. Один из них выглядит так:

path.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall stlpd
_std::basic_string<wchar_t,class stlpd_std::char_traits<wchar_t>,class stlpd_std::allocator<wchar_t>
 >::basic_string<wchar_t,class stlpd_std::char_traits<wchar_t>,class stlpd_std::allocator<wchar_t> >
(class stlpd_std::basic_string<wchar_t,class stlpd_std::char_traits<wchar_t>,class stlpd_std::alloca
tor<wchar_t> > const &)" (__imp_??0?$basic_string@_WV?$char_traits@_W@stlpd_std@@V?$allocator@_W@2@@
stlpd_std@@QAE@ABV01@@Z)

Почему я не могу получить Boost Building с STLport?

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

С помощью нескольких человек из списка рассылки Boost, я смог получить надстройку с помощью STLport.Ниже приведены некоторые инструкции, которые я написал для всех, кто столкнулся с этой проблемой:

Сначала убедитесь, что вы скомпилировали STLport для вашего соответствующего компилятора.Затем перейдите в каталог tools / build / v2 и отредактируйте файл user-config.jam следующим образом:

using msvc : 8.0 ;
using stlport : 5.2.1 : C:/Code/third_party_source/STLport-5.2.1/stlport : C:/Code/third_party_source/STLport-5.2.1/lib-vc8 ;

Выше убедитесь, что вы используете соответствующую версию MSVC и правильный абсолютный путь к STLport.В этом примере я использую MSVC8, но измените его на вашу версию в следующей таблице:

Visual Studio .NET 2003        -- 7.1
Visual Studio 2005             -- 8.0
Visual Studio 2008             -- 9.0
Visual Studio 2010             -- 10.0
Visual Studio 11               -- 11.0

Аналогично, для строки использования stlport убедитесь, что вы указали соответствующую версию STLport.Здесь я использую версию 5.2.1.Следующий параметр - это путь к каталогу включения stlport (измените соответственно), а третий и последний параметр - это путь к библиотекам STLport, которые скомпилированы для той же версии MSVC .

Как только пользовательский файл конфигурации настроен, теперь вы можете создать boost, вызвав следующие команды:

Для DEBUG:

b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=debug stdlib=stlport define=_STLP_DEBUG --layout=tagged stage

Для RELEASE:

b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=release stdlib=stlport --layout=tagged stage

Важным изменением, которое я пропустил, была опция define=_STLP_DEBUG во время вызова b2.

3 голосов
/ 04 октября 2011

В строке using stlport отсутствует указатель версии. Измените его на:

using stlport : 5.2.1 : C:/Code/work/rdailey-t510/depot/dev/gfe-dev/server/external/stlport/WINNT5.0_OPT.OBJ/stlport : C:/Code/work/rdailey-t510/depot/dev/gfe-dev/server/external/stlport/WINNT5.0_OPT.OBJ/lib ;

Затем, когда вы вызываете bjam / b2, укажите функцию с включенной версией, т.е.

stdlib=stlport-5.2.1

(Конечно, для версий STLPort, отличных от 5.2.1, подставьте правильные номера версий.)

...