在使用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相关推荐

  1. VS2017下解决:error LNK2019: 无法解析的外部符号 __iob_func

    新版vs把函数名做了改动,即VS2015和VS2017中__iob_func改成了__acrt_iob_func,所以需要进行函数转换. /* 当libjpeg-turbo为vs2010编译时,vs2 ...

  2. VS2013解决error LNK2019: 无法解析的外部符号 mfcs120ud.lib

    最近因为要改一个MFC项目重写学习MFC,没想到只是用VS2013新建一个最简单的MFC项目运行就报类上百个的类似"Error LNK2019: 无法解析的外部符号...mfcs120ud. ...

  3. C语言LNK2019错误怎么解决,error LNK2019: 无法解析的外部符号 (解决方法)

    在用C++进行套接字编程时遇到下面的错误: 1>------ 已启动生成: 项目: NetClient, 配置: Debug Win32 ------ 1>  NetClient.cpp ...

  4. error LNK2019: 无法解析的外部符号 “public: __cdecl ...,函数 ...中引用了该符号解决办法

    vs报错输出如下所示: 1>myview.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl CSPReport::CSPReport(vo ...

  5. 在cocos2dx2.2.3中遇到的error LNK2019: 无法解析的外部符号 _libiconv_closexxxxxxx的解决办法

    转自:http://blog.csdn.net/wxq_wuxingquan/article/details/44978031 conv是Cocos2dx自带的非常好用的可以解决中文乱码问题的库,但是 ...

  6. error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR... 2011年08月05日 09:08:15

    经过测试,能解决问题 error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR... 一,问题描述 MSVCRTD.lib(crtexew.obj) ...

  7. “error LNK2019: 无法解析的外部符号”的几种可能原因

    1.前言 error LNK2019: 无法解析的外部符号这个错之前见过很多次,能知道最根本的原因在于链接过程中没有搜索到程序用到的库文件,即*.lib. 笔记本重装了系统,有32Bit升到64Bit ...

  8. MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16

    1.问题描述 做开源项目时,碰到VS2010报错如下: MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 _ ...

  9. error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 int __cdecl invoke_main(void)”中被引用

    From:https://blog.csdn.net/u012570056/article/details/74639894 一,问题描述 MSVCRTD.lib(exe_winmain.obj) : ...

最新文章

  1. Python-Numpy(3)矩阵基本操作
  2. 超越“迁移”的思考:应用程序该如何被Kubernetes接管?
  3. Swift开发之粒子动画的实现
  4. Mac屏幕常亮时间控制:Theine
  5. 随手记_科研攻略_好的idea的产生
  6. 闭包、作用域链、函数
  7. 项目经理如何做好风险管理
  8. 独立游戏开发(十七)-- 发布Taptap
  9. 面试过阿里等互联网大公司,我知道了这些套路
  10. 如何锁定win10笔记本键盘
  11. css 全局撑开页面
  12. OSPF协议原理及配置4-邻接关系的建立和LSDB同步
  13. Datawhale NLP入门:Task5 基于深度学习的文本分类2
  14. 三星 android 模拟器,三星Galaxy Tab模拟器
  15. 按图搜索义乌购商品(拍立淘) API
  16. 基于CSS和HTML技术开发中国海洋大学网站的首页
  17. 我们从下面几个方面来区别led天花灯和led筒灯
  18. 蘑菇街财报:短暂“盈利”惹众嘲
  19. PingCAP Clinic 服务:贯穿云上云下的 TiDB 集群诊断服务
  20. 与非java语言使用RSA加解密遇到的问题:algid parse error, not a sequence

热门文章

  1. 配置git send-mail发邮件 (126邮箱适用)
  2. 设计一个莫尔斯电码电报机
  3. 计算机系统要素--第六章,02-HACK汇编编译器实现
  4. MongoDB:高可用基础-副本集原理
  5. 使用Wiredtiger恢复MongoDB中collection-x-xxx.wt文件数据
  6. 刘克亚励志演讲(清晨/夜晚)
  7. “耳根”发布新作《一念永恒》,刷新武汉网络文学IP版权交易纪录
  8. 汇编SHR、SHL、SAR、SAL、ROL、ROR、RCL、RCR指令
  9. Chapter 19 稳恒磁场
  10. 每次买新手机后要安装的软件(个人爱好)