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
--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文件名字!!!!!问题解决。
VS编译release版本的出现的LNK1104 无法打开文件“libboost_filesystem-vc140-mt-1_58.lib的更多相关文章
- 编译问题解决:LINK : fatal error LNK1104: 无法打开文件“*.dll”
一.引言 编译项目的时候,总会遇到些奇怪的问题,比如说以下这种: LINK : fatal error LNK1104: 无法打开文件“..\bin\ICPRegistration.dll” 我在编译 ...
- 编译Release版本小技巧
原文:编译Release版本小技巧 由于项目中要部署的App有很多,每次发布一个版本后都有一堆垃圾文件,部署在众多的终端机上不注意的话十分容易搞错.记得以前在VS中是可以设置下不生成vhost和pdb ...
- VS 2017 VC++项目出现 LNK1104 无法打开文件"libcmtd.lib" 的解决方法
今天用VS 2017编译一个以前的VC++动态库项目,出现了一个链接器问题: LNK1104 无法打开文件"libcmtd.lib" . 操作系统版本为:Windows 10 18 ...
- VS2017Release+x64失败,LNK1104,无法打开文件"msvcprt.lib"
采用VS2017+Qt5.10联合开发环境建立开发,将Qt的库包含到VS中使用VS2017的Debug+x64模式调试程序,通过并出现对应的EXE应用程序! 但是转换到Release+x64模式出现问 ...
- fatal error LNK1104: 无法打开文件“libc.lib”的问题 (转)
今天,编译程序的时候,意外遇到了一个错误,就是VS2008一直提示:fatal error LNK1104: 无法打开文件“libc.lib”,后来在网上查找了很多资料,终于知道原因了... 如果将用 ...
- 转载: LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”的原因又一例
转载地址:http://blog.csdn.net/mxclxp/article/details/8196142 LINK : fatal error LNK1104: 无法打开文件“mfc71.li ...
- LINK : fatal error LNK1104: 无法打开文件“ucrtd.lib”
先说解决方案: 选中项目->右键->属性->常规 -->Windows SDK 改成当前系统的SDK版本,我这边是10.0.15063.0,重新生成即可 下载cefsh ...
- 【OpenGL】LNK1104 无法打开文件“freeglutd.lib”
新建的OpenGL程序编译时经常会出现[LNK1104 无法打开文件“freeglutd.lib”]问题,如果freeglutd.lib确实放到了正确的路径下,通常可以通过添加“NDEBUG”宏定义解 ...
- fatal error LNK1104: 无法打开文件“lua51.lib”
今天学习C++与Lua通信,遇到了问题:fatal error LNK1104: 无法打开文件"lua51.lib" 开发环境: VS2012 cocos版本:cocos2d-x- ...
随机推荐
- Neo4j--节点的增删查改基本用法
注 node-name 和 label-name node-name 有点句柄的味道. 从面向对象来理解,label-name相当于一个类,node-name相当于这个类的对象. 类比关系型数据库的 ...
- 连接mysql的各种方式
mysql连接操作是客户端进程与mysql数据库实例进程进行通信.从程序设计角度来说,属于进程通信,常用进程通信包括: 管道.Tcp/Ip 套接字.UNIX域套接字. 1.TCP/IP (1)使用最多 ...
- M内核迎来大BOSS,ARM发布Cortex-M55配NPU Ethos-U55 ,带来无与伦比的性能提升
说明: 全球顶级嵌入式会展Embedded Word2020这个月底就开了,各路厂家都将拿出看家本领. 先回顾下去年的消息: 1.去年年初的时候ARM发布Armv8.1-M架构,增加了Arm Heli ...
- centos rpm安装jdk1.8
1.官网下载jdk的rpm文件(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) ...
- selenium爬取优酷页面并下载图片
from selenium import webdriver import requests driver = webdriver.Chrome() #打开优酷 driver.get("ht ...
- 浅谈tcp协议
tcp协议 三次握手四次挥手 优点: 稳定,可靠 应用:发邮件 缺点: 有延迟 占用系统资源多 ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 排序
从 MySQL 表中使用 SQL SELECT 语句来读取数据. 如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回 ...
- ZooKeeper解决的问题
1.解决分布式单点问题 https://www.jianshu.com/p/08b76bd7a634 2.实现分布式环境数据的一致性.访问ZooKeeper树结构时,不同节点返回的数据是一致,不会引起 ...
- 我的第一次JAVA实训——校园公用房管理系统
老铁们,昨天电脑没电了.这是上周答应的大项目. 别打脸. 详细内容我之后再写,下面是代码地址. Github地址 附:一个寂寞 以上
- 十六进制转化二进制[c]
#include<stdio.h> #include<string.h> #include<stdlib.h> int hex2dec(char c) { ; // ...