vs2013编译libimobiledevice,错误记录

1. static inline int vasprintf 中,报错: 在"inline"之后应输入"("的错误:

原因:Visual Studio2013中的C编译器还不支持inline语法,在VC中,仍然需要用微软自己定义的__inline,而尚不支持inline,尽管inline在C++中是支持的。

解决:添加代码:

 #ifdef _MSC_VER
#define inline    __inline
#endif

2. access(unique_filename, F_OK) 报错,F_OK未识别的标识符;

原因:

在Linux下,access函数的声明在<unistd.h>文件中,声明如下:

int access(const char *pathname, int mode);

在Windows下没有access函数,但在<io.h>文件中有_access函数,声明如下:

int _access(const char* _Filename, int _AccessMode);

解决:使用_access替换access,声明相应的F_OK等:

#ifndef _MSC_VER
#include <unistd.h>
#else
#include <io.h>
#define access    _access
#define F_OK    00
#define R_OK    04
#define W_OK    02
#define X_OK    06
#endif

3. “sockaddr”: “struct”类型重定义的错误:

现象:

windows.h和winsock2.h存在有类型重定义,往往体现在VC程序中包含winsock2.h时出现编译错误:

error C2011: “sockaddr_in”:“struct”类型重定义

解决:

在项目属性中,c/c++中的预处理器设置中,添加 WIN32_LEAN_AND_MEAN 的宏定义;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值