LINK : fatal error LNK1104: 无法打开文件“libboost

    技术2022-07-10  152

    安装配置PCL时遇到了一些问题,在VS中链接了Boost的lib,但是运行代码时:

    LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc141-mt-gd-x64-1_72.lib”

    后来还遇到了:

    LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc141-mt-sgd-x64-1_72.lib”

    去PCL的目录下找到boost目录,发现lib里面的是

    libboost_filesystem-vc142-mt-gd-x64-1_72.lib

     vc表示的是VisualStudio的编译器MSVC版本,vc14.2对应的是VS2019,而我使用的是VS2017,对应的vc是14.1(参考:https://blog.csdn.net/dingding1022/article/details/102155840),所以程序在运行的时候会需要141的而不是142的lib包。

     

    解决办法是:

    1.重新安装低版本的PCL(不要啊,配置环境变量链接库好累)

    2.下载boost,然后自己编译成14.1的

    3.使用VS2019

    结合自己的情况,决定选2

    编译Boost

    参考:https://blog.csdn.net/gllg1314/article/details/80198864

    我用的版本是1.72,去boost官网下载zip(下载太慢就加一点魔法),解压。然后去找VS2017里的命令行工具

    cd到解压的目录下,执行

    bootstrap.bat

    对比其他博客,发现没有生成bjam.exe,不过只要有b2.exe就够了,因为两者都是一样的。

    执行

    b2 address-model=64 --toolset=msvc-14.1 link=static runtime-link=shared runtime-link=static threading=multi debug release

    注意,要想获得libboost_xxx_gd_xx形式,需要将参数设置为 :link=static

    想获得libboost_xxx_gd_xx形式,参数为 :runtimelink=shared link=static

    想获得libboost_xxx_sgd_xx形式,参数为:runtimelink=static link=static

    当然你也可以build-type=complete,这样生成的lib里就各个版本都有了。

    想获得boost_xxx_xxx的形式,参数为:runtimelink=shared link=shared

    可以参考https://www.cnblogs.com/blog-vincent-0x1F7/p/9646358.html

    提取目录下文件名,用来向VS中添加依赖项。

    Processed: 0.011, SQL: 12