LNK1104:无法打开文件'libboost_program_options-vc100-mt-sgd-1_56.lib'

时间:2014-09-08 14:56:49

标签: c++ boost

尝试在VS2010中编译时出现此错误:

LNK1104:无法打开文件'libboost_program_options-vc100-mt-sgd-1_56.lib'

我已经在stackoverflow上阅读了很多类似的问题,但仍然无法修复它。

文件'libboost_program_options-vc100-mt-gd-1_56.lib'存在,但'libboost_program_options-vc100-mt-sgd-1_56.lib'(注意sgd与gd中的s)不在我的lib文件夹中。

我可能需要更改项目设置中的某些内容以摆脱s !? 或者我需要以不同的方式编译boost库? 或者它不属于上述......!

我希望有人能指出我正确的方向。

也许有帮助,我正在尝试从https://github.com/thegrandpoobah/voronoi

编译voronoi.cpp

我下载了Boost 1.56并使用以下方法编译了库二进制文件:

bootstrap
.\b2

如入门文件中所述。

1 个答案:

答案 0 :(得分:0)

简而言之

您正在链接静态库(因此lib名称中的's')。可能是因为您在Visual Studio下的“代码生成”中的“多线程”或“多线程调试”设置下生成项目。

使用

构建boost时,默认情况下不会构建这些库

b2

你需要改为运行

b2 build-type=complete

还生成boost libs的静态版本。

详情

在文件boostcpp.jam中,构建选项(对于Windows目标)定义为:

self.minimal-properties-win = [ property-set.create <variant>debug
        <variant>release <threading>multi <link>static <runtime-link>shared
        <address-model>32 <address-model>64 ] ;

self.complete-properties = [ property-set.create
    <variant>debug <variant>release
    <threading>multi
    <link>shared <link>static
    <runtime-link>shared <runtime-link>static ] ;

self.complete-properties-win = [ property-set.create
    <variant>debug <variant>release
    <threading>multi
    <link>shared <link>static
    <runtime-link>shared <runtime-link>static
    <address-model>32 <address-model>64 ] ;

<link>选项代表构建的lib本身,而<runtime-link>代表它们实际构建的lib类型。

因此,对于minimal-properties,您不会生成<runtime-link>static,这就是您在名称后缀中使用s所寻找的内容。