VS编译release版本的出现的LNK1104 无法打开文件“libboost_filesystem-vc140-mt-1_58.lib
最近在用restbed和vs2015做一个项目,debug编译的没问题,但是编译release就有问题,困扰了一天,说下我的出坑过程。
1、我用到了外部的库 restbed ,首先要想正确编译过,你的外部链接库要与工程的链接编译选项一致。比如:我是X64 release MD链接 在VS2015一下编译,你在编译restbed或者其他的外部库的时候,也要采取同样的编译方式才能顺利编译通过。
2、加入boost库的 include路径和lib库的路径(外部库的加入工程方式也是如此)
include头文件的路径有两种方式:
(1)项目属性页,VC++目录 — 包含目录
(2)项目属性页,C/C++常规 — 附加包含目录
加入lib库的路径:
(1)项目属性页,VC++目录 — 库目录
(2)项目属性页,连接器 — 常规 — 附加库目录
3、debug编译通过,release就是编不过,提示错误:无法打开文件“libboost_filesystem-vc140-mt-1_58.lib
这种问题,首先你要确认下,debug和release的工程属性页是否都是正确配置:
再确认下所引用的外部库,是否是以debug或者release的形式编译的。
这些都没问题,还是会提示错误无法打开文件“libboost_filesystem-vc140-mt-1_58.lib
好了 这个时候你就需要编译boodt库了
登陆boost官网;www.boost.org 找到提示错误的boost版本,下载 解压,
运行bootstrap.bat文件,等这个批处理处理完。
在VS所在的环境 比如 VS2015 X86 这种 打开命令行,进入boost的根目录,执行命令:bjam –build-type=complete toolset=msvc–14.0 threading=multi link=shared address-model=64
编译完,就有了lib和头文件。
上面的命令是简化版本的比较方便,还有详细的命令:
address-model: 如果没有这个参数,是生成32位的平台库,=x64是生成x64的平台库
–toolset=msvc-14.0: 编译器,比如msvc-14.0(VS2015),可选的还有gcc, borland等
link:生成动态链接库(=static)/静态链接库(=shared)
runtime-link:动态/静态链接C++运行库,有shared和static两种方式
threading=multi:单/多线程编译,一般写多线程,直接指定为multi
按照步骤2 把boost加入工程,
结果还是提示错误,最后最后有一个大坑!!!!
release 和 x64 和 MD
libboost_date_time-vc141-mt-x64-1_69.lib
我们需要的是
libboost_date_time-vc141-mt-x64-1_69.lib
动态库生成的是
boost_date_time-vc141-mt-x64-1_69.lib
boost_date_time-vc141-mt-x64-1_69.dll
所以我们得改文件名字了。 修改lib文件名字!!!!!问题解决。