您的位置:首页 > 其它

Mingw下gcc4.5.0编译新版ffmpeg的问题

2010-08-12 18:09 417 查看
下载了今年8月份的ffmpeg的源码后,在Mingw下编译。ffmpeg警告gcc版本过老,造成栈不对齐,可能存在问题。建议用gcc4.2以上版本。于是下载了最近的稳定版gcc4.5.0进行编译。然而编译不过,出现错误:strcasecmp声明不确切。

在头文件中定义(libavutil/avstring.h) #define strcasecmp stricmp

问题依旧。

于是自己实现了两个函数。

static inline char __hack_charget( char c )

{

if(c >= 'a' && c <= 'z')

c += 'A' - 'a';

return c;

}

static inline int hack_strcasecmp( char const *a, char const *b )

{

char ac, bc;

int r;

for(;;) {

ac = __hack_charget(*a++);

bc = __hack_charget(*b++);

r = (int)ac - (int)bc;

if(r)

return r;



if(!ac)

return 0;

}

}

static inline int hack_strncasecmp( char const *a, char const *b, int n )

{

char ac, bc;

int r, i;



for(i = 0; i < n; ++i) {

ac = __hack_charget(*a++);

bc = __hack_charget(*b++);

r = (int)ac - (int)bc;

if(r)

return r;



if(!ac)

return 0;

}

return 0;

}

#define strcasecmp hack_strcasecmp

#define strncasecmp hack_strncasecmp

将这个文件include进avstring.h和metadata.h中,问题解决。测试后,结果正确。

我google过这个问题,有些老外卡在这里,正在四处询问。

总结:

即使是公布的gcc和ffmpeg也会存在这种比较低级的问题,毕竟是有源代码,见到问题解决问题就行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: