0

我正在尝试使用 Xcode for iPhone 在 Objective c 中播放 mp3 文件。

在 viewDidLoad 中:

 NSURL *mySoundURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/mySound.mp3", [[NSBundle mainBundle] resourcePath]]];

NSError *myError;
mySound = [[AVAudioPlayer alloc] fileURLWithPath:heartBeatURL error:&myError];
[mySound play];

我在这里找到了一个建议:使用 AVAudioPlayer 播放声音时出现问题?

但它对我不起作用,它只会产生更多问题。

当程序启动时,我在输出中得到这个并且程序崩溃:

体系结构 i386 的未定义符号:“_OBJC_CLASS_$_AVAudioPlayer”,引用自:SecondViewController.o 中的 objc-class-ref ld:未找到体系结构 i386 的符号 collect2:ld 返回 1 个退出状态

我在这里做错了什么?

4

2 回答 2

1

在我看来,您还没有将 AVFoundation 框架链接到您的应用程序中。

假设最近的 xcode 足够:

  1. 在左侧的 Project Navigator 中选择您的项目
  2. 选择你的目标
  3. 选择构建阶段
  4. 将 AVFoundation.framework 添加到 Link Binary With Libraries 阶段

这是一些工作的 AVAudioPlayer 代码进行比较:

NSURL *mySoundURL = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"BadTouch" ofType:@"mp3"]];
NSError *myError;
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:mySoundURL error:&myError];
[self.player play];
于 2012-06-26T22:07:50.880 回答
1

将 AVFoundation.framework 添加到您的项目目标Link Binary With Libraries

然后在你的.h中导入:

#import <AVFoundation/AVFoundation.h>

@interface ViewController : UIViewController <AVAudioPlayerDelegate> {

    AVAudioPlayer *player;
    }
@property (strong,nonatomic) AVAudioPlayer *player;

@end

在你的 .m 中:

    @synthesize player;


    NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
    resourcePath = [resourcePath stringByAppendingString:@"/mySound.mp3"];
    NSLog(@"Path to play: %@", resourcePath);
    NSError* err;

    //Initialize our player pointing to the path to our resource
    player = [[AVAudioPlayer alloc] initWithContentsOfURL:
              [NSURL fileURLWithPath:resourcePath] error:&err];

    if( err ){
        //bail!
        NSLog(@"Failed with reason: %@", [err localizedDescription]);
    }
    else{
        //set our delegate and begin playback
        player.delegate = self;
        [player play];

    }
于 2012-06-27T06:12:13.400 回答