boost - 无法使用 STLport 库构建 Boost

标签 boost build stlport

我正在使用 MSVC 7.1 在 Windows 上使用 STLport 5.2.1 构建 boost 1.48.0,这是我运行的命令行:

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)

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

最佳答案

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

首先确保您已经为各自的编译器编译了 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

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

设置用户配置文件后,现在您可以通过调用以下命令来构建 boost。

对于调试:
b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=debug stdlib=stlport define=_STLP_DEBUG --layout=tagged stage

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

我错过的重要变化是 define=_STLP_DEBUG调用 b2 期间的选项.

关于boost - 无法使用 STLport 库构建 Boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641030/

相关文章:

c++ - 如何确保始终为特定 C++ 实例返回相同的 Python 实例?

docker - docker多阶段构建期间的Gradle依赖项缓存?

xcode - 错误 : "Could not build module AVfoundation" on Xcode 5. 1

c++ - boost::unordered_map 中的运算符 []

c++ - 如何在 Boost 测试框架中重用测试用例?

c++ - 在 Snow Leopard 下编译 STLport 的问题

c++ - 如何在我自己的容器类中使用 std::allocator

c++ - Boost ASIO socket 消耗文件描述符

java - 使用 Eclipse 在 64 位机器上编译 32 位 Java 构建