1、解决:无法解析的外部符号 __imp___vsnprintf

在 vs2015 工程选项,链接器附加依赖项里面添加 legacy_stdio_definitions.lib 即可。

出现这个问题的原因是 vs2015 默认编译时将许多标准库采用内联方式处理,因而没有可以链接的标准库文件,所以要专门添加标准库文件来链接标准库中的函数。

2、解决:无法解析的外部符号__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 */

再次编译,错误消失。



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

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

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

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

    解决:无法解析的外部符号__iob_func 原文:http://blog.csdn.net/hebbely/article/details/53780562 在使用 VS2015 下使用 libjp ...

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

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

  4. VS2015 error LNK2019 无法解析的外部符号 _WinMain@16,该符号在函数 int __cdecl invoke_main(void)

    前言 上一篇文章中,为了编译OpenCV的示例代码,然后搭建环境, 最后想直接运行示例demo,我在创建新工程的时候,直接创建了一个win32窗口项目,然后环境配置完成后,将opencv 的示例代码k ...

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

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

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

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

  7. 雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法

    雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法 标签(空格分隔): 雷塞 SM304 WIN10 VS2015 最近由于导师要求,负责喷涂机器人的控制部分,接触到 ...

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

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

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

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

最新文章

  1. 5G 承载网 — 前传、中传、回传
  2. escape mysql_MySQL中ESCAPE关键字的用法详解
  3. 大促密集,CDN如何保障电商体验如丝般顺滑?
  4. stone 的 log4j配置详解
  5. P1181 数列分段Section I
  6. 安装apk出现Parse error when parsing manifest. Discontinuing installation.解决方案
  7. 试验设计与matlab数据分析 下载,试验设计与MATLAB数据分析
  8. RESTful 风格 API 接口文档模板
  9. XML中写注释的格式
  10. 聊聊身边的嵌入式—英语学习利器点读笔
  11. 2023年天津理工大学中环信息学院专升本机械设计考试大纲
  12. 模拟信号和数字信号的区别
  13. 数据结构基础— How Long Does It Take
  14. 【第四篇】商城系统-品牌管理实现
  15. 144hz和60hz测试软件,专业FPS玩家讲解:60Hz与144Hz刷新率的问题
  16. python表达爱意_程序员有哪些对女友表达爱意的奇招?
  17. MATTEO ZANGA网页JS功能实现
  18. php api 接口
  19. java调用云小蜜示例教程(调用sdk版本)
  20. python找出只出现一次的字符_在一个字符串中找到第一个只出现一次的字符。

热门文章

  1. 看《Sicko》,有感
  2. 清洁机器人--音频方案之基于国民MCU IO控制的唯创WT588 语音播放方案
  3. java的this和supper
  4. Windows server 2022 组策略软件分发
  5. C语言教程:十进制转换任意进制
  6. kubebuilder 上手体验
  7. QQ登陆,获取QQ用户信息
  8. 如何理解视频会议体统中的GK?
  9. Spring笔记通俗易懂版
  10. CPU被挖矿,Redis竟是内鬼,