我已经运行了 bjam.exe --build-dir="C:\build-boost"--build-type=minimal msvc stage
例如,现在我有带有这些 header 的库 .lib
libboost_serialization-vc100-mt
libboost_serialization-vc100-mt-1_45
libboost_serialization-vc100-mt-gd
libboost_serialization-vc100-mt-gd-1_45
我相信这些应该是用于调试和发布版本的静态库。当我使用 Multi-threaded Debug (/MTd)
运行编译器时,出现错误 LNK1104: cannot open file 'libboost_serialization-vc100-mt-sgd-1_45.lib'
它正在寻找一个带有 -sgd
我哪里错了?
最佳答案
有点令人困惑的是,使用 MSVC 构建 boost 有两个“静态”选项。
B2.exe 采用选项 link=static
告诉 boost 你想静态链接它(boost)。如果您使用/MT 或/MTd 编译您的 VC 项目,您还需要使用 runtime-link=static
选项来告诉 boost 您将静态链接到 VC 运行时库。
它是第二个 runtime-link=static
,它将 -s 放在 .lib 名称中。
我构建 boost 的命令行是
b2.exe --toolset=msvc variant=release link=static threading=multi runtime-link=static stage
关于c++ - 我有静态或动态 boost 库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4619764/