安装配置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.youkuaiyun.com/dingding1022/article/details/102155840),所以程序在运行的时候会需要141的而不是142的lib包。
解决办法是:
1.重新安装低版本的PCL(不要啊,配置环境变量链接库好累)
2.下载boost,然后自己编译成14.1的
3.使用VS2019
结合自己的情况,决定选2
编译Boost
参考:https://blog.youkuaiyun.com/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中添加依赖项。