无法构建 Boost 64 位动态库,只能构建静态库
我最近通过 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?
谢谢
I have recently acquired Visual Studio 2010 through Dreamspark, so I can now compile 64 bit applications and libraries. I then compiled the Boost 1.47 libraries with Bjam using the following line for input.
.\b2 -a -d 0 -q -j 4 -d 0 --variant=debug,release --link=shared,static --threading=multi --address-model=32 --toolset=msvc-10.0
When I do, I get 4 of each library (static-debug, dynamic-debug, static-release, dynamic-release).
After they are compiled, I move them into another directory called win32libs. I then use the exact same line to compile the 64 bit versions, but switch the address model to 64 (I know they are almost identical because I copy and past from the same text document I made to make compiling them easy). When I go into my stage directory after the 64 bit compilation, I only see .lib, no .dll. Is this an issue with what I'm doing, or is in some way, 64 bit dlls not supported?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
改变 Boost 编译方式的选项(与那些仅控制 b2 执行的选项相反)称为“功能”,并且在命令行上不得以破折号开头。在您的示例中,功能是:
集 它生成的库将根据
Windows 上的 Boost 库命名方案 。 lib*.lib 是静态库; other*.lib 是相应 DLL 的导入库。
The options that change how Boost is compiled (as opposed to those that just control b2's execution) are called "features" and must not be preceeded by dashes on the command line. In your example the features are:
The libraries it generates will be named according to the
library naming scheme for Boost on Windows. lib*.lib are static libraries; other*.lib are the import libs for the corresponding DLLs.