首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用STLport库构建Boost

无法使用STLport库构建Boost
EN

Stack Overflow用户
提问于 2011-10-04 05:45:03
回答 2查看 2.7K关注 0票数 7

我正在使用MSVC7.1在Windows上使用STLport 5.2.1构建boost 1.48.0,下面是我运行的命令行:

代码语言:javascript
复制
b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=debug stdlib=stlport --layout=tagged stage

我的user-config.jam设置如下:

代码语言:javascript
复制
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相关的链接器错误。其中一个看起来像这样:

代码语言:javascript
复制
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)

为什么我不能使用STLport进行Boost构建?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-02 01:47:32

在Boost邮件列表上的一些人的帮助下,我能够使用STLport进行boost构建。下面是我为遇到这个问题的其他人写的一些说明:

首先,确保您已经为各自的编译器编译了STLport。然后转到tools/build/v2目录,并将文件user-config.jam编辑为以下内容:

代码语言:javascript
复制
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,但请根据下表将其更改为您的版本:

代码语言:javascript
复制
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

同样,对于using STLport行,请确保指定适当的stlport版本。这里我使用的是版本5.2.1。下一个参数是stlport include目录的路径(相应地更改),第三个也是最后一个参数是为相同版本的MSVC进行编译的STLport库的路径。

一旦设置了用户配置文件,现在就可以通过调用以下命令来构建boost。

对于调试:

代码语言:javascript
复制
b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=debug stdlib=stlport define=_STLP_DEBUG --layout=tagged stage

对于发行版:

代码语言:javascript
复制
b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=release stdlib=stlport --layout=tagged stage

我遗漏的重要更改是在调用b2期间的define=_STLP_DEBUG选项。

票数 4
EN

Stack Overflow用户

发布于 2011-10-04 06:09:49

您的using stlport行缺少版本说明符。将其更改为:

代码语言:javascript
复制
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时,使用包含的版本指定功能,即

代码语言:javascript
复制
stdlib=stlport-5.2.1

(当然,对于5.2.1以外的STLPort版本,请替换为正确的版本号。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7641030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档