【ffmpeg + VS2010】编译包含libavutil\common.h后出现找不到inttypes.h的问题

本文介绍了解决在使用libavutilcommon.h时,因包含inttypes.h而引发编译错误的解决办法。通过删除inttypes.h的包含并采用自定义实现,避免了相关问题的出现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

包含libavutil\common.h,由于里面#include <inttypes.h> ,会出现找不到inttypes.h的问题,

即使把inttypes.h的路径加上去之后,也无法编译通过,反而会出现一大堆问题。

解决办法如下:

删除#include <inttypes.h>这句,加上下面一大段

//Howard 2013-03-04 , 解决包含inttypes.h以后出现的Bug
//#include <inttypes.h>
//Howard 2013-03-04 +++begin+++
#if defined(WIN32)  && !defined(__MINGW32__) && !defined(__CYGWIN__)      
#define  CONFIG_WIN32      
#endif      
#if defined(WIN32) && !defined(__MINGW32__)  && !defined(__CYGWIN__) && !defined(EMULATE_INTTYPES)      
#define EMULATE_INTTYPES      
#endif      
#ifndef EMULATE_INTTYPES      
#include  <inttypes.h>     
#else
typedef signed char int8_t;      
typedef  signed short int16_t;      
    typedef signed int   int32_t;      
    typedef  unsigned char  uint8_t;      
    typedef unsigned short uint16_t;      
    typedef  unsigned int   uint32_t;      
#ifdef CONFIG_WIN32      
        typedef signed  __int64   int64_t;      
        typedef unsigned __int64 uint64_t;      
#else /*  other OS */      
        typedef signed long long   int64_t;      
        typedef  unsigned long long uint64_t;      
#endif /* other OS */      
#endif /*  EMULATE_INTTYPES */


//解决UINT64_C没定义的问题
#ifndef INT64_C
#define INT64_C(c) (c##LL)
#define UINT64_C(c)  (c##ULL)
#endif 


//Howard 2013-03-04 +++end+++
### 关于 `sdk_common.h` 文件的内容、定义及其使用 #### 内容概述 `sdk_common.h` 是一个常见的头文件,在多个嵌入式开发环境和软件开发套件 (SDK) 中存在。该文件通常包含了整个项目中广泛使用的宏定义、全局变量声明以及函数原型声明等基础组件。 对于特定平台而言,此文件可能还包含了一些针对硬件特性的配置选项或是简化编程接口的辅助功能[^1]。 #### 定义与作用 在不同的 SDK 或者框架下,`sdk_common.h` 的具体实现可能会有所差异,但是其核心目的是为了提供一组统一的基础工具给开发者使用。这可以包括但不限于: - **数据类型的定义**:正如某些 SDK 所需,像 cc.h 这样的头部文件用于定义常用的数据类型以便在整个应用程序中保持一致性和兼容性。 - **公共常量和枚举值**:这些通常是用来表示固定不变的状态码或者是操作模式的选择项。 - **外部库的支持**:如果要编译或运行 C++ Demo,则往往需要依赖 SDK 提供的各种库文件和支持性头文件来完成必要的链接工作。 - **条件编译指令**:通过预处理器命令可以根据不同目标平台调整源代码的行为,确保程序能够在多种环境中正常运作。 #### 使用场景 当涉及到跨平台或多模块协作时,`sdk_common.h` 就显得尤为重要。它不仅帮助维护了一致的标准,而且减少了重复劳动的可能性。例如,在 DPDK 开发环境下虽然大部分代码由 C 语言编写并遵循特定的构建流程,但在实际应用层面上仍然可以通过此类通用型头文件来进行扩展或者定制化处理[^2]。 另外值得注意的是,并不是所有的 SDK 都会严格命名为 `sdk_common.h`;有时也会根据具体的架构特点而采用其他名称,比如 NXP 平台下的 I.MX6ULL SDK 可能仅涉及几个关键的头文件如 fsl_common.h 来承担相似的角色[^4]。 ```cpp // 示例 sdk_common.h 内部结构示意 #ifndef SDK_COMMON_H_ #define SDK_COMMON_H_ #include <stdint.h> typedef enum { STATUS_SUCCESS, STATUS_ERROR, } status_t; extern void init_sdk(void); #endif /* SDK_COMMON_H_ */ ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值