最近在用restbed和vs2015作一个项目,debug编译的没问题,可是编译release就有问题,困扰了一天,说下个人出坑过程。html
一、我用到了外部的库 restbed ,首先要想正确编译过,你的外部连接库要与工程的连接编译选项一致。好比:我是X64 release MD连接 在VS2015一下编译,你在编译restbed或者其余的外部库的时候,也要采起一样的编译方式才能顺利编译经过。bootstrap
二、加入boost库的 include路径和lib库的路径(外部库的加入工程方式也是如此)多线程
include头文件的路径有两种方式: ui
(1)项目属性页,VC++目录 -- 包含目录atom
(2)项目属性页,C/C++常规 -- 附加包含目录 spa
加入lib库的路径:.net
(1)项目属性页,VC++目录 -- 库目录命令行
(2)项目属性页,链接器 -- 常规 -- 附加库目录线程
三、debug编译经过,release就是编不过,提示错误:没法打开文件“libboost_filesystem-vc140-mt-1_58.libdebug
这种问题,首先你要确认下,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
--stagedir参数 表示生成目录的存放目录
按照步骤2 把boost加入工程,
库名字的识别:
boost中为每一个库编译了4中C/C++连接方式的静态连接库
① /MT /MTd
bjam stage --toolset=msvc-10.0 --build-type=complete --stagedir="H:\Boost\boost_1_57_0\bin\vc10" link=static runtime-link=static threading=multi debug release
生成的库名字格式
/MT: libboost_atomic-vc100-mt-s-1_57.lib /MTd: libboost_atomic-vc100-mt-sgd-1_57.lib
② /MD /MDd
bjam stage --toolset=msvc-10.0 --build-type=complete --stagedir="H:\Boost\boost_1_57_0\bin\vc10" link=static runtime-link=shared threading=multi debug release
生成的库文件名字格式
/MD: libboost_atomic-vc100-mt-1_57.lib /MDd: libboost_atomic-vc100-mt-gd-1_57.lib
结果仍是提示错误,最后最后有一个大坑!!!!
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文件名字!!!!!问题解决。