- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用VC编译libMPG123库.doc
用VC编译libMPG123库
首先从/ 下载最新的源码包,解压后得到如下目录结构将src/libmpg123目录下的全部文件拷贝到ports/MSVC++/libMPG123目录下。
打开VS装入libMPG123.vcproj工程文件,按 “生成” 按钮,编译提示 mpg123.h, config.h 文件找不到。查找原始的src文件目录下确实没有这两个文件,但是有mpg123.h.in, config.h.in 两个文件,用记事本打开查看就是c的代码文件,于是将他们拷贝过来后然后去掉后面的 .in 扩展名,编辑 mpg123.h 将前面的
@INCLUDE_STDLIB_H@@INCLUDE_SYS_TYPE_H@
两行替换为
#include stdlib.h#include sys/types.h
再进行编译,提示
libmpg123\mpg123.h(732) : error C2081: “ssize_t”: 形参表中的名称非法
网上搜了一把原来是 VC 中没有ssize_t这个类型定义,于是按照config.h最后面的提示在mpg123.h 中添加如下一个类型定义
#ifdef _MSC_VERtypedef long ssize_t;#endif
再次编译,还是提示出错,主要是在 mpg123lib_intern.h中提示有一些引入的 .h 文件找不到,找到相对应的错误行可以看到是由一个 #ifdef 定义的开关来做引入库定义的,通过查找发现这些名称是在 config.h 中定义的,记下名称,到config.h 中将对应该名称的 #define 语句注释掉。再次重新编译,还是失败,分析发现是由于一个ALIGNED(16) 的宏造成的。通过在工程中查找ALIGNED,发现他是在 config.h 文件中通过
#define CCALIGN 1
来控制使用ALIGNED的,可以将其注释掉,或者在optimize.h中将ALIGNED(a)的宏定义由
#ifdef CCALIGN#define ALIGNED(a) __attribute__((aligned(a)))#else#define ALIGNED(a)#endif
修改为
#ifdef CCALIGN#ifdef _MSC_VER#define ALIGNED(a) __declspec(align(a))#else#define ALIGNED(a) __attribute__((aligned(a)))#endif#else#define ALIGNED(a)#endif
再重新编译,没有新的error 出来,编译通过。编译工作到此结束,以后就可以通过VC来试验用libMPG123来进行mp3解码了。
附:网上一篇文章,gcc和VC编译器的一些差异/bbs/read.php?tid=7145
Popularity: 32% [?]
VC下编译libMPG123(补)
前次用VC编译了libMPG123库,编译通过,但是没有进行例子程序编译测试。今天测试了一下用libMPG123做MP3到WAV的解码,结果编译器连接错误,提示找不到符号 _strcasecmp 和 _strncasecmp。使用google大法,发现VC没有strcasecmp和strncasecmp函数,只好为他做了一个补丁。
在.h文文件中添加如下声明:
#ifdef _MSC_VERint strcasecmp(char *s1, char *s2);int strncasecmp(char *s1, char *s2, register int n);#endif
在.c文件中添加如下实现
#ifdef _MSC_VER
int strcasecmp(char *s1, char *s2)
{
while (toupper((unsigned char)*s1) == toupper((unsigned char)*s2++))
if (*s1++ == ) return 0;
return(toupper((unsigned char)*s1) - toupper((unsigned char)*--s2));
}
int strncasecmp(char *s1, char *s2, register int n)
{
while (--n = 0 toupper((unsigned char)*s1) == toupper((unsigned char)*s2++))
if (*s1++ == ) return 0;
return(n 0 ? 0 : toupper
您可能关注的文档
最近下载
- 义务教育版(2024)四年级信息科技 第3课 寻找可靠数据源 课件.pptx VIP
- 北京中创天勤MSD系列伺服驱动器说明书.pdf VIP
- 中核人才测评题库及答案.doc
- 术后镇痛培训课件.ppt VIP
- 2025年银发经济消费人群洞察.pdf VIP
- 幼儿园课件:大班上学期 语言——蚯蚓的旅行.pptx
- 2025年司机心理测试题目及答案.doc VIP
- 义务教育版(2024)四年级信息科技 第2课 获取数据有方法 课件.pptx VIP
- 义务教育版(2024)四年级信息技术 第2课 获取数据有方法 课件.pptx VIP
- 新版人教版七年级下册地理课件 第八章 我们邻近的地区和国家 第四节 俄罗斯.pptx VIP
文档评论(0)