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

2023-10-31

解决:无法解析的外部符号__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.   
  3. #define stdin  (__acrt_iob_func(0))  
  4. #define stdout (__acrt_iob_func(1))  
  5. #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 */  

再次编译,错误消失。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决:无法解析的外部符号__iob_func 的相关文章

  • 【H.264/AVC视频编解码技术详解】十七:帧内预测编码的预测实现方法

    H 264 AVC视频编解码技术详解 视频教程已经在 CSDN学院 上线 视频中详述了H 264的背景 标准协议和实现 并通过一个实战工程的形式对H 264的标准进行解析和实现 欢迎观看 纸上得来终觉浅 绝知此事要躬行 只有自己按照标准文档
  • pybind 回调 多线程 异常

    thread代码 int RecvThread SOCKET sockClient py function caminfocall g caminfocall caminfocall py function caminfocall py f
  • arm neon RGB转Gray的例子

    确认处理器是否支持NEON cat proc cpuinfo grep neon 看是否有如下内容 Features swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva i
  • python PyAV库解析H264视频流及保存指定帧

    PyAV是一个视频处理库 可用于读取 写入和处理视频 要使用PyAV读取视频关键帧 首先需要安装PyAV 可以使用以下命令安装PyAV pip install av 安装完成后 您可以使用以下代码打开视频文件并读取关键帧 import av
  • 解决:无法解析的外部符号__iob_func

    解决 无法解析的外部符号 iob func 原文 http blog csdn net hebbely article details 53780562 在使用 VS2015 下使用 libjpeg turbo 静态库 编译时报错了 cpp
  • Ubuntu环境下安装ffmpeg

    1 创建安装 录 sudo mkdir p usr local ffmpeg lib 2 下载ffmpeg源码 Download FFmpeg 3 解压源文件 4 到指定ffmpeg目录进行配置 cd ffmpeg 4 3 2 配置 con
  • 【H.264/AVC视频编解码技术详解】十六:帧内预测编码的基本原理

    H 264 AVC视频编解码技术详解 视频教程已经在 CSDN学院 上线 视频中详述了H 264的背景 标准协议和实现 并通过一个实战工程的形式对H 264的标准进行解析和实现 欢迎观看 纸上得来终觉浅 绝知此事要躬行 只有自己按照标准文档
  • H.264 入门篇 - 11 (帧间预测 - DPB 管理策略)

    DPB 对解码图像的存储有个策略 更倾向于存储对后面编码有用的图像 也就是参考图像 虽然说 DPB 中也可以存储非参考图像 在DPB没满的时候 会无差别地把参考图像与非参考图像一并插入DPB中 但是一旦DPB满了之后 如果新重建的图像为参考
  • C++ opencv处理kinect红外数据和彩色数据

    kinect好像已是明日黄花 但现在需要用这个做交互的人还不少 要做手势识别 于是入手一枚二手kinect2 0 入坑玩玩 做手势识别 直觉上要用opencv 从网上搜的资料来看 大多是通过openNi来操作kinect 而且要openNi
  • 几种前端h264播放器记录

    近期做了点工作记录一下 主要是将H264流在html5上进行播放 众所周知 大多数的 video组件都是支持FLV或者MP4以及m3u8格式的 而如果是WebRTC是直接集成好了 本次要求的环境主要是通过Websocket方式进行流传输 不
  • 【分享NVIDIA GTC 23大会干货】在 GPU 上使用 Video Codec SDK,CV-CUDA 和 TensorRT 加速现代云上视频应用 [SE51229]

    在 GPU 上使用 Video Codec SDK CV CUDA 和 TensorRT 加速现代云上视频应用 前言 基于现代 的视频流水线架构与运用场景 NVIDIA 视频处理的工具集 1 视频编解码工具 2 前后处理部分 CV CUDA
  • 海思3559 安装

    设置地址 开机后任意键 进入 u boot 界面显示 hisilicon 以下内容转自 海思开发记录 一 3559A开发环境搭建 whitefish520的博客 CSDN博客 海思3559a 说明 这次安装的是Ubuntu14 04 64位
  • 函数被声明为已否决

    函数被声明为已否决 尝试这个1 Project Properties gt Configuration Properties gt C C gt General gt SDL checks关掉 我的电脑这个方法可以其他方法 2 pragma
  • web端播放视频之rtsp协议转HLS

    rtsp协议转HLS rtsp转hls协议 一 前言 1 传统安防行业 2 新兴直播行业 二 实现 1 rtsp转为HLS 2 提供http服务 3 组件封装dll 三 测试 1 使用vlc测试hls 2 使用nginx测试hls 3 实时
  • ffmpeg提取视频分辨率输出为批处理变量

    在使用ffmpeg批处理编码视频时候 如果导入的素材尺寸不一样 得每次输入分辨率很麻烦 这里提供一个自动提取拖入的视频文件的分辨率的批处理脚本 另存为bat即可 需要文件夹下有ffprobe exe 原理是通过ffprobe exe把媒体信
  • Android交叉编译OpenCV+FFmpeg+x264的艰难历程

    前言 如果你没有兴趣看完本文 只想获得可编译的代码或编译后的产物 可以直接点击下面的链接 跟随步骤编译代码或直接下载我编译好的产物 注 编译顺序要按照 x264 gt FFmpeg gt OpenCV 这样来 x264 FFmpeg Ope
  • 2023-ISCC信息安全与对抗竞赛wp-misc(详解,有脚本( •̀ ω •́ ),脚本解析,有附件)

    芜湖 芜湖 没想到不知不觉今年这一届就算结束了 真可谓真是八仙过海各显神通呀 本文章我们只讨论题 别的不讨论 题目还是很不错 我只是题目的搬运工 进入正题 以下是本人的一些解题思路和过程 供各位道友参考 对了不要喷呀 如有错误或者心得请联系
  • linux安装ffmpeg

    1 下载解压 wget http www ffmpeg org releases ffmpeg 3 1 tar gz tar zxvf ffmpeg 3 1 tar gz 2 进入解压后目录 输入如下命令 usr local ffmpeg为
  • 【视频编码学习】VTM15.0编译运行

    VTM版本 15 0 操作系统 Win10 x64位 IDE Visual Studio 2019 编译器 cmake 利用VS2019运行VTM15 0 前言 一 下载VTM15 0 二 下载安装cmake 1 下载cmake并安装 2
  • H.265/HEVC编码结构

    H 265 HEVC编码结构 为了增强各种应用下操作的灵活性以及数据损失的鲁棒性 H 265 HEVC在编解码的设计上添加了多种新的语法结构 相较于以往的视频编码标准 如H 264 AVC 这种新的语法架构使得H 265 HEVC在压缩效率

随机推荐

  • 如何在 AWS 实例中获取默认 Windows 密码

    Amazon是领先的云托管提供商 您可以从 AWS 获得任何类型的服务器 从非常小到非常大 如果您已在 AWS EC2 托管帐户中创建了 Windows Server 实例 本文将帮助您了解如何在 AWS 实例中查找 Windows Ser
  • 5 个最佳 WordPress 托管提供商

    1 WP引擎 WP Engine 是适用于大容量网站的最佳且完全托管的 WordPress 托管 如果您的网站有数百万流量 您可以使用 WP Engine 托管 WP Engine 提供稳定 安全的托管 可以容纳您的所有客户 它的成本可能不
  • 如何在 Ubuntu 18.04 上安装 Atom 文本编辑器

    Atom是由GitHub开发的开源跨平台代码编辑器 它有一个内置的包管理器 嵌入Git控制 智能自动完成 语法突出显示和多个窗格 从本质上讲 Atom 是一个基于 Electron 构建的桌面应用程序 使用 HTML JavaScript
  • 如何在 Debian 9 上安装 R

    R 是一种快速发展的开源编程语言和环境 专门从事统计计算和图形表示 它由 R 统计计算基金会支持 主要供统计学家和数据挖掘人员用于开发统计软件和执行数据分析 本教程将引导您了解如何在 Debian 9 系统上安装 R 先决条件 在继续本教程
  • 如何在 Ubuntu 20.04 上安装和配置 Redis

    Redis 是一个开源内存键值数据存储 它可以用作数据库 缓存和消息代理 并支持各种数据结构 例如字符串 哈希 列表 集合等 Redis 通过 Redis Sentinel 提供高可用性 并通过 Redis Cluster 跨多个 Redi
  • Linux 中的 dmesg 命令

    Linux 内核是操作系统的核心 它控制对系统资源 如 CPU I O 设备 物理内存和文件系统 的访问 在引导过程中以及系统运行时 内核将各种消息写入内核环形缓冲区 这些消息包括有关系统操作的各种信息 内核环形缓冲区是物理内存的一部分 用
  • 如何在 CentOS 8 上设置 Nginx 服务器块

    服务器块是一种 Nginx 指令 它定义特定域的设置 允许您在一台服务器上运行多个网站 对于每个网站 您可以设置网站文档根目录 包含网站文件的目录 创建单独的安全策略 使用不同的 SSL 证书等等 本文介绍如何在 CentOS 8 上设置
  • 在 Debian 10 Linux 上使用 Let's Encrypt 保护 Nginx

    Let s Encrypt 是由互联网安全研究小组 ISRG 开发的免费 自动化 开放的证书颁发机构 提供免费的 SSL 证书 Let s Encrypt 颁发的证书受到所有主要浏览器的信任 并且自颁发之日起 90 天内有效 本教程展示了如
  • 如何在 Ubuntu 18.04 上设置 WireGuard VPN

    WireGuard 是一种采用最先进加密技术的现代 VPN 虚拟专用网络 技术 与其他类似解决方案 例如 IPsec 和 相比OpenVPN WireGuard 更快 更容易配置且性能更高 它是跨平台的 几乎可以在任何地方运行 包括 Lin
  • Linux 中的 pkill 命令

    本文涵盖了 Linux 的基础知识pkill命令 pkill是一个命令行实用程序 它根据给定的条件向正在运行的程序的进程发送信号 可以通过进程的完整名称或部分名称 运行进程的用户或其他属性来指定进程 The pkill命令是的一部分proc
  • Linux 触摸命令

    touch 命令允许我们更新现有文件和目录的时间戳以及创建新的空文件 在本指南中 我们将通过实际示例和最常见命令选项的详细说明向您展示如何使用 touch 命令 Linux 文件时间戳 在讨论如何使用 touch 命令之前 我们首先回顾一下
  • 如何在 Ubuntu 上安装 Deb 文件(包)

    Deb 是所有基于 Debian 的发行版使用的安装包格式 Ubuntu 存储库包含数千个 deb 软件包 可以从 Ubuntu 软件中心或使用命令行安装apt and apt get公用事业 许多应用程序不包含在 Ubuntu 或任何第
  • 如何在 Ubuntu 20.04 上安装 Gradle

    Gradle 是一种通用工具 用于构建 自动化和交付软件 它主要用于 Java C 和 Swift 项目 Gradle 结合了 Ant 和Maven 与使用 XML 进行脚本编写的前辈不同 Gradle 使用Groovy 一种动态的 面向对
  • 在 CentOS 7 上安装 Odoo 11

    Odoo 是世界上最受欢迎的一体化商业软件 它提供一系列业务应用程序 包括 CRM 网站 电子商务 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo11 需要 Python 3 5 CentOS 存储库中不提供该版本
  • Linux安装jenv,灵活管理jdk(不同目录,采用不同的jdk)

    前文 总所周知 随着java版本的不断升级 jdk版本越来越高 但是互联网开发软件很多还维持在jdk1 8的时代 但是很多开源软件只至此java 11以上的版本 这就会导致很多程序上的不兼容或者报错 本文主要解决 linux不同目录下 采用
  • Linux下修改java.library.path

    第一步 打印出当前的java library path有哪些目录 执行 vi Test java 切换编辑模式 i 插入如下代码 public class Test public static void main String args S
  • Anaconda创建新环境,CondaHTTPError: HTTP 000 CONNECTION FAILED for url <http://mirrors.tuna.tsinghua问题解决过程

    两步即可 第一步 配置anaconda为清华源 在Anaconda Prompt终端依次执行这些命令 conda config add channels http mirrors tuna tsinghua edu cn anaconda
  • MQTT协议

    http www blogjava net yongboy category 54835 html
  • 树莓派的连接与AP局域网路由器配置

    文章目录 前言 1 树莓派的连接 1 1 本地连接 1 2 远程连接 2 AP路由器配置 2 1 配置无线局域网 2 2 配置以太网实现局域网 前言 树莓派的连接方式分为两种 本地和远程 也可以通俗的说是有本地设备还是就一台笔记本的情况 本
  • 解决:无法解析的外部符号__iob_func

    解决 无法解析的外部符号 iob func 原文 http blog csdn net hebbely article details 53780562 在使用 VS2015 下使用 libjpeg turbo 静态库 编译时报错了 cpp