VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func
在使用VS2015下使用libjpeg-turbo静态库,编译时报错了:
error LNK2019: 无法解析的外部符号 __iob_func,该符号在函数 output_message 中被引用
根据关键字在网上找到一些文章描述了类似的错误,大都是找不到外部符号__iob
,原因是VS2010上使用了VC6编译的DLL。虽然与我的情况不同,但是原理是一样的,我遇到的这个问题的原因是VS2015下使用VS2010编译的静态库,因为我用的libjpeg-turbo静态库是从官网下载编译好的版本(应该是vs2010这样的版本编译的)。
其实__iob_func
和__iob
都是用来定义stdin,stdout,stderr
,只是不同的VC版本实现方式不同。
下面是VS2015的头文件corecrt_wstdio.h
中对stdin,stdout,stderr
定义
_ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);#define stdin (__acrt_iob_func(0))
#define stdout (__acrt_iob_func(1))
#define stderr (__acrt_iob_func(2))
原来在VS2015中__iob_func
改成了__acrt_iob_func
,所以我参照《【LNK2019】 无法解析的外部符号 __iob》这篇文章的方法在自己的代码中增加了一个名为__iob_func
转换函数:
/** 当libjpeg-turbo为vs2010编译时,vs2015下静态链接libjpeg-turbo会链接出错:找不到__iob_func,* 增加__iob_func到__acrt_iob_func的转换函数解决此问题,* 当libjpeg-turbo用vs2015编译时,不需要此补丁文件*/
#if _MSC_VER>=1900
#include "stdio.h"
_ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);
#ifdef __cplusplus
extern "C"
#endif
FILE* __cdecl __iob_func(unsigned i) { return __acrt_iob_func(i);
}
#endif /* _MSC_VER>=1900 */
再次编译,错误消失。
其实吧,因为我用的libjpeg-turbo静态库是从官网下载编译好的版本(应该是vs2010这样的版本编译的),所以才有这个问题,如果自己重新把libjpeg-turbo的源码在vs2015下重新编译,就不会存在这个问题了。
VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func相关推荐
- VS2017下解决:error LNK2019: 无法解析的外部符号 __iob_func
新版vs把函数名做了改动,即VS2015和VS2017中__iob_func改成了__acrt_iob_func,所以需要进行函数转换. /* 当libjpeg-turbo为vs2010编译时,vs2 ...
- VS2013解决error LNK2019: 无法解析的外部符号 mfcs120ud.lib
最近因为要改一个MFC项目重写学习MFC,没想到只是用VS2013新建一个最简单的MFC项目运行就报类上百个的类似"Error LNK2019: 无法解析的外部符号...mfcs120ud. ...
- C语言LNK2019错误怎么解决,error LNK2019: 无法解析的外部符号 (解决方法)
在用C++进行套接字编程时遇到下面的错误: 1>------ 已启动生成: 项目: NetClient, 配置: Debug Win32 ------ 1> NetClient.cpp ...
- error LNK2019: 无法解析的外部符号 “public: __cdecl ...,函数 ...中引用了该符号解决办法
vs报错输出如下所示: 1>myview.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl CSPReport::CSPReport(vo ...
- 在cocos2dx2.2.3中遇到的error LNK2019: 无法解析的外部符号 _libiconv_closexxxxxxx的解决办法
转自:http://blog.csdn.net/wxq_wuxingquan/article/details/44978031 conv是Cocos2dx自带的非常好用的可以解决中文乱码问题的库,但是 ...
- error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR... 2011年08月05日 09:08:15
经过测试,能解决问题 error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR... 一,问题描述 MSVCRTD.lib(crtexew.obj) ...
- “error LNK2019: 无法解析的外部符号”的几种可能原因
1.前言 error LNK2019: 无法解析的外部符号这个错之前见过很多次,能知道最根本的原因在于链接过程中没有搜索到程序用到的库文件,即*.lib. 笔记本重装了系统,有32Bit升到64Bit ...
- MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16
1.问题描述 做开源项目时,碰到VS2010报错如下: MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 _ ...
- error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 int __cdecl invoke_main(void)”中被引用
From:https://blog.csdn.net/u012570056/article/details/74639894 一,问题描述 MSVCRTD.lib(exe_winmain.obj) : ...
最新文章
- Python-Numpy(3)矩阵基本操作
- 超越“迁移”的思考:应用程序该如何被Kubernetes接管?
- Swift开发之粒子动画的实现
- Mac屏幕常亮时间控制:Theine
- 随手记_科研攻略_好的idea的产生
- 闭包、作用域链、函数
- 项目经理如何做好风险管理
- 独立游戏开发(十七)-- 发布Taptap
- 面试过阿里等互联网大公司,我知道了这些套路
- 如何锁定win10笔记本键盘
- css 全局撑开页面
- OSPF协议原理及配置4-邻接关系的建立和LSDB同步
- Datawhale NLP入门:Task5 基于深度学习的文本分类2
- 三星 android 模拟器,三星Galaxy Tab模拟器
- 按图搜索义乌购商品(拍立淘) API
- 基于CSS和HTML技术开发中国海洋大学网站的首页
- 我们从下面几个方面来区别led天花灯和led筒灯
- 蘑菇街财报:短暂“盈利”惹众嘲
- PingCAP Clinic 服务:贯穿云上云下的 TiDB 集群诊断服务
- 与非java语言使用RSA加解密遇到的问题:algid parse error, not a sequence