Xcode: 未定义符号 x86_64 架构: "_OBJC_CLASS_$_AVPlayer"

4
我正在尝试在我的应用程序中使用AVPlayer,我制作了一个测试应用程序,它可以完美地工作。但是当我尝试将相同的AVPlayer实现到我的真实应用程序中时,它会崩溃并显示以下两个错误:

Xcode ScreenShot

这是LiveViewController.h文件:

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>

@interface LiveViewController : UIViewController<AVAudioPlayerDelegate>
@property (strong, nonatomic) AVPlayer *audioPlayer;
@property (strong, nonatomic) IBOutlet UIButton *playPauseBtn;
- (IBAction)playAudio:(id)sender;
@end

以下是LiveViewController.m的代码:

#import "LiveViewController.h"

@interface LiveViewController ()

@end

@implementation LiveViewController
NSURL *urlStream;

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSString *urlAddress = @"http://198.178.123.23:8662/stream/1/;listen.mp3";
    urlStream = [NSURL URLWithString:urlAddress];
    self.audioPlayer = [AVPlayer playerWithURL:urlStream];
    
    NSError *error;
    
    if (error)
    {
        NSLog(@"Error in audioPlayer: %@",
              [error localizedDescription]);
    } else {
        [_audioPlayer prepareForInterfaceBuilder];
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)playAudio:(id)sender {
    if(self.audioPlayer.rate > 0 && self.audioPlayer.error == nil){
        [self.audioPlayer pause];
        NSLog(@"Hello there, trying to stop playing!");
        [self.playPauseBtn setImage:[UIImage imageNamed:@"play_button"]  forState:UIControlStateNormal];
    }else{
        self.audioPlayer = [AVPlayer playerWithURL:urlStream];
        [self.audioPlayer play];
        NSLog(@"Hello there, trying to play!");
        [self.playPauseBtn setImage:[UIImage imageNamed:@"pause_button"] forState:UIControlStateNormal];
    }
}

-(void)audioPlayerDidFinishPlaying:
(AVAudioPlayer *)player successfully:(BOOL)flag
{
}

-(void)audioPlayerDecodeErrorDidOccur:
(AVAudioPlayer *)player error:(NSError *)error
{
}

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player
{
}

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player
{
}

@end

这些错误是什么,如何解决?
注意:我搜寻了这些错误,但没有找到解决方案。

你是否已将AVFoundation.framework添加到项目的构建阶段中? - Alexander Tkachenko
@AlexanderTkachenko 我把它导入了头文件,这不够吗? - ANA
不,请检查它是否已添加到构建阶段。 - Alexander Tkachenko
你说得对,我忘了查找那个,它起作用了 :) - ANA
太好了:) 祝你在AVFoundation方面好运) - Alexander Tkachenko
感谢您的帮助!祝编码愉快 :) - ANA
3个回答

5
解决方案: 在您的项目中添加AVFoundation.framework到您的构建阶段。

希望这可以帮到您。


4

只需在构建阶段的“链接二进制文件和库”中添加AVKit.framework即可。

前往 >> 构建阶段。 >> 链接二进制文件和库 >> 添加AVKit.framework。


0

如果你遇到了AVAudioEngine的问题,但是同样的错误,这个方法可以解决它。

前往 >> Build Phases. >> Link Binary With Libraries >> 添加AVFoundation.framework, AVFAudio.framework


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接