【发布时间】:2011-11-04 03:57:28
【问题描述】:
我最近通过 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 位编译后进入我的阶段目录时,我只看到 .lib,没有 .dll。这是我正在做的事情的问题,还是在某种程度上不支持 64 位 dll?
谢谢
【问题讨论】:
-
我相信你不应该在
link、address-model等选项之前给它双破折号。 -
刚刚尝试删除其中一个破折号并收到“无效选项”错误。不过,这一切都适用于 32,所以我看不出问题出在哪里。难道我在专业旁边安装了 c++ express 也会导致问题?
-
@JAKE6459 :Pablo 是正确的,他的意思是删除 both 破折号。即,您的 32 位命令行应该是
.\b2 -a -d 0 -q -j 4 -d 0 variant=debug,release link=shared,static threading=multi address-model=32 toolset=msvc-10.0。当您在那里有破折号时,这些功能将被忽略并构建默认值。