无法构建Boost 64位动态库,只能构建静态

时间:2011-08-26 00:53:54

标签: c++ boost dynamic static

我最近通过Dreamspark获得了Visual Studio 2010,因此我现在可以编译64位应用程序和库。然后我用Bjam使用以下行编译Boost 1.47库。

.\b2 -a -d 0 -q -j 4 -d 0 --variant=debug,release --link=shared,static --threading=multi --address-model=32 --toolset=msvc-10.0

当我这样做时,我得到每个库中的4个(静态调试,动态调试,静态释放,动态释放)。 编译完成后,我将它们移动到另一个名为win32libs的目录中。然后,我使用完全相同的行来编译64位版本,但是将地址模型切换为64(我知道它们几乎完全相同,因为我从我制作的相同文本文档中复制和过去,以便编译它们很容易)。当我在64位编译后进入我的stage目录时,我只看到.lib,没有.dll。这是我正在做的事情的问题,还是在某种程度上,不支持64位dll?

由于

1 个答案:

答案 0 :(得分:6)

更改Boost编译方式的选项(与仅控制b2执行的选项相反)称为“features”,不能在命令行上使用破折号。在您的示例中,功能包括:

  • 变体
  • 链接
  • 线程
  • 地址模型
  • 工具集

它生成的库将根据 library naming scheme for Boost on Windows。 lib * .lib是静态库;其他* .lib是相应DLL的导入库。