首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

【急问】关于mp3解码程序的移植问题

【急问】关于mp3解码程序的移植问题

我从网上下的mp3解码程序(基于arm的)包括:
common.h
common.c
decode.h
decode.c
huffman.h
huffman.c
fastimdct.c
Fastsb.c
LAYER3.C

其中LAYER3.C是mp3解码的主程序,我就修改了mp3数据存放的地址和解码后数据的存放地址;

我直接在LAYER3.C中写nios控制的主程序,LAYER3.C中原来的主程序作为子程序调用,用IDE编译的时候出现了这样的错误:
E:/mp3/SD_audio/mp3_syslib/Debug/libmp3_syslib.a(alt_main.o)(.text+0x60): In function `alt_main':
/cygdrive/c/altera/kits/nios2_60/components/altera_hal/HAL/src/alt_main.c:157: undefined reference to `main'
collect2: ld returned 1 exit status

之后,我又用了另外一个方法移植,就是:再建一个c文件写主程序,在文件头添加了:#include “LAYER3.C”,然后在主程序调用LAYER3.C的主程序mp3();结果错误更多,都是mp3()中的错误,而所有的错误都是mp3()中显示:自定义函数和自定义结构体没有定义,可是这些在common.h 、common.c 、decode.h 、decode.c 、huffman.h 、huffman.c 、fastimdct.c 、Fastsb.c
中定义过了。

最后,我又试了,不在文件头添加:#include “LAYER3.C”,编译后显示的是:mp3()(LAYER3.C的主程序)没有定义!

请问我的做法正确吗?出现这个错误是什么原因呢?

请大侠们赐教!

我的主程序是这样的:

#include "basic_io.h"
#include "SD_Card.h"

#include <math.h>
#include "system.h"
#include <stdio.h>
#include <stdlib.h>
#include "COMMON.H"
#include "DECODE.H"
#include "LAYER3.H"  

int main(void)
{ UINT32 i;
  UINT16 voicedata;
  mp3();     //调用mp3解码程序,mp3()是LAYER3.C的主函数
  while(1)
  {
    for(i=0x00000000;i<0x000fffff;i+=2 )
     {      
       while(IORD(AUD_FULL_BASE,0));
               voicedata=IORD(i,0);
               IOWR(AUDIO_0_BASE,0,voicedata);
               IOWR(SEG7_DISPLAY_BASE,0,i);
     }             
         
 }

LAYER3.H是我自己写的,就一句话“void mp3();”

编译之后还是显示mp3()没有定义!

请大侠赐教!!

[此贴子已经被作者于2007-3-21 17:19:40编辑过]

返回列表