解决:无法解析的外部符号__iob_func

原文:http://blog.csdn.net/hebbely/article/details/53780562

在使用 VS2015 下使用 libjpeg-turbo 静态库,编译时报错了:

[cpp] view plain copy
  1. 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定义

[cpp] view plain copy
  1. ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);
  2. #define stdin  (__acrt_iob_func(0))
  3. #define stdout (__acrt_iob_func(1))
  4. #define stderr (__acrt_iob_func(2))

原来在 VS2015 中 __iob_func 改成了 __acrt_iob_func ,所以我参照《【LNK2019】 无法解析的外部符号 __iob》这篇文章的方法在自己的代码中增加了一个名为 __iob_func 转换函数:

[cpp] view plain copy
  1. /*
  2. * 当libjpeg-turbo为vs2010编译时,vs2015下静态链接libjpeg-turbo会链接出错:找不到__iob_func,
  3. * 增加__iob_func到__acrt_iob_func的转换函数解决此问题,
  4. * 当libjpeg-turbo用vs2015编译时,不需要此补丁文件
  5. */
  6. #if _MSC_VER>=1900
  7. #include "stdio.h"
  8. _ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);
  9. #ifdef __cplusplus
  10. extern "C"
  11. #endif
  12. FILE* __cdecl __iob_func(unsigned i) {
  13. return __acrt_iob_func(i);
  14. }
  15. #endif /* _MSC_VER>=1900 */

再次编译,错误消失。

解决:无法解析的外部符号__iob_func相关推荐

  1. VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func

    1.解决:无法解析的外部符号 __imp___vsnprintf 在 vs2015 工程选项,链接器附加依赖项里面添加 legacy_stdio_definitions.lib 即可. 出现这个问题的 ...

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

    在使用VS2015下使用libjpeg-turbo静态库,编译时报错了: error LNK2019: 无法解析的外部符号 __iob_func,该符号在函数 output_message 中被引用 ...

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

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

  4. 【l转】VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func

    https://blog.csdn.net/hebbely/article/details/53780562

  5. error LNK2001: 无法解析的外部符号 __iob_func

    因为在vs2015之后 这个方法名被更新了.所以我们得找方法去解决这个问题,我们需要把这个符号更改成新的方法名: #if _MSC_VER>=1900 #include "stdio. ...

  6. VS2005使用easyx图形库graphics.h链接过程出错:error LNK2001: 无法解析的外部符号 __iob

    在vs2005的stdio.h头文件中 #ifndef _STDSTREAM_DEFINED #define stdin (&__iob_func()[0]) #define stdout ( ...

  7. 错误 LNK2019,无法解析的外部符号__imp____iob_func; 无法解析的外部符号 __imp__fprintf 的解决方法。

    每次看到的LNK2019 的报错就有种崩溃的感觉,尤其是刚接触vc++的程序员. 我们经常会在网上搜索大神的技术文档,大神们提供的源代码都表示没有bug直接可以使用,但是我们下载以后发现各种报错,看到 ...

  8. VTK 无法解析的外部符号的解决办法

    当你VTk所有目录和链接库加入到属性页中后,或许还会遇见一个让人头疼的问题: 这是为什么呢? 大部分新手可能都是在配置完毕后亟不可待地在网上找了一段测试代码就进行测试,并没有考虑测试代码之中的陷阱.然 ...

  9. Error LNK2001 无法解析的外部符号 的几种情况及解决办法

    Error LNK2001 无法解析的外部符号 的几种情况及解决办法 多线程下的单例模式 这里要处理的是懒汉模式. [cpp] view plain copy  class Singleton { p ...

最新文章

  1. sftp协议下如何上传和下载文件
  2. 王欢:如何构建好的智能风控工具体系?
  3. MATLAB实现直方图均衡化与规定化
  4. python直接执行代码漏洞_修复Python任意命令执行漏洞
  5. 定义一个不能被拷贝的类
  6. Mozilla:火狐操作系统是巨大而艰难的一步“
  7. mysql nosql sqlite_自己做了一个轻量级的 NoSQL 数据库
  8. wiki-editor语法
  9. Android log 管理工具
  10. 阿里云服务器 window server tomcat启动 并且关闭window防火墙 配置8080端口开放还是没用
  11. java 线程只执行一次_java – 如何确保方法只执行一次并且只从一个线程执行?...
  12. c语言程序输出一个桌子图案,几道程序题,请高手帮帮忙吧
  13. node.js中操作数据库
  14. 关于win10防火墙“高级设置”变成灰色点不了,解决办法
  15. 计算机工程信息学院严翔,《频频相见》严翔、严晓频、胡凌虹,交通社出品,有容书邦发行著【摘要 书评 在线阅读】-苏宁易购图书...
  16. 微信企业号开发源码Java编写,懒人开发一键式部署项目,WeChatEnterprise框架你值得拥有
  17. 脑与认知神经科学Matlab Psytoolbox认知科学实验设计——实验设计一
  18. linux下的buff/cache内存占用过高-手动清除释放内存
  19. 一步一步安装 Microsoft .NET Pet Shop 4.0
  20. HttpGET和POST的详细区别

热门文章

  1. java kafka分布式_Kafka分布式消息系统
  2. cmake 编译mysql_CentOS5.6下使用cmake编译MySQL5.5.13源码和安装
  3. qq传java文件_java学习:基于TCP的网络文件传输(可改写的QQ文件传输)
  4. android 安装 apk 7.0,android 7.0及以上版本安装apk
  5. java weka命令行_使用自己的Java代码和模型获取WEKA中的预测百分比
  6. golang 获取struct类型_聊聊golang的类型断言
  7. 口腔取模过程及注意事项_数字化口 腔的发展与展望
  8. 皮一皮:这解释...没毛病!
  9. ElasticSearch 面试 4 连炮,你顶得住么?
  10. 皮一皮:这几天最容易搞错的事情...