2012-09-18 75 views
0

所以即時嘗試一個簡單的應用程序來播放一個簡單的MP3,並由於某種原因,我得到同樣的錯誤,無論我嘗試。 無法運行,只要我包括AVFoundation/AVAudioPlayer它崩潰在我身上。但一旦我刪除該框架,它工作正常。 請幫忙。運行AVFoundation/AVAudioPlayer框架時出現XCode鏈接器錯誤

這是我收到錯誤..

ld: warning: ignoring file /Users/nnamdiokeke/Desktop/Play/AVFoundation.framework/AVFoundation, file was built for unsupported file format (0xce 0xfa 0xed 0xfe 0x c 0x 0 0x 0 0x 0 0x 9 0x 0 0x 0 0x 0 0x 6 
0x 0 0x 0 0x 0) which is not the architecture being linked (i386): /Users/nnamdiokeke/Desktop/Play/AVFoundation.framework/AVFoundation 
    Undefined symbols for architecture i386: 
     "_OBJC_CLASS_$_AVAudioPlayer", referenced from: 
      objc-class-ref in ViewController.o 
    ld: symbol(s) not found for architecture i386 
    clang: error: linker command failed with exit code 1 (use -v to see invocation) 

的代碼如下粘貼。

頭文件

// 
// ViewController.h 
// Play 
// 
// Created by Nnamdi Okeke on 9/13/12. 
// Copyright (c) 2012 Nnamdi Okeke. All rights reserved. 
// 

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

@interface ViewController : UIViewController <AVAudioPlayerDelegate> { 

    AVAudioPlayer *song; 
    NSURL *songlink; 
} 

@property (nonatomic, retain) AVAudioPlayer *song; 

-(IBAction)play:(id)sender; 

@end 

實現文件

// 
// ViewController.m 
// Play 
// 
// Created by Nnamdi Okeke on 9/13/12. 
// Copyright (c) 2012 Nnamdi Okeke. All rights reserved. 
// 

#import "ViewController.h" 
#import <AVFoundation/AVAudioPlayer.h> 


@implementation ViewController 


- (void)viewDidLoad 
{ 
    songlink = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"A4Hood" ofType:@"mp3"]]; 
    song = [[AVAudioPlayer alloc] initWithContentsOfURL:songlink error:nil]; 
    song.delegate = self; 
    //[song play]; 

    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

-(IBAction)play:(id)sender { 
    songlink = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"A4Hood" ofType:@"mp3"]]; 
    song = [[AVAudioPlayer alloc] initWithContentsOfURL:songlink error:nil]; 
    song.delegate = self; 
    [song play]; 


} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

@end 
+0

您是否在項目中添加了AVFoundation framwork? –

+0

你在你的項目中正確添加avfoundation framwork? –

+0

對兩者都是。框架工作在我的項目中。 @RomitMewada ..我需要以任何不同於上述代碼的方式以編程方式實現或實現框架嗎? – user1635121

回答

0

它無法運行每當我包括AVFoundation/AVAudioPlayer

由於包含頭文件是不夠的 - 你必須再次鏈接AV Foundation.framework,否則動態加載器如何知道從哪裏載入不在二進制文件中的符號?因此,您必須將AVFoundation框架添加到Xcode中的項目中。

更多關於爲什麼這是必要的here

+0

嗨。我已經將框架添加到我的項目中,但仍然遇到同樣的問題。是否需要以與上述代碼不同的方式以編程方式實現或導入框架? – user1635121

+0

@userxxx不,添加框架應該足夠了。你錯過了別的... – 2012-09-18 09:46:13

+0

你能幫我找到什麼嗎? – user1635121

0

實際上,我有同樣的問題, 這個編譯器的鬥爭:用於

#if defined(__cplusplus) 
    #define AVF_EXPORT extern "C" 
#else 
    #define AVF_EXPORT extern 
#endif 
在AVAudioSettings

,這個定義並沒有被編譯器解釋。 難道是因爲我在我的應用程序中使用了一些C++嗎?

經過測試,這是問題所在。 要解決這個問題,請創建另一個包含AVAudio的課程,並完成與音頻相關的操作。

看來,AVAudio和C++並不是很棒。 我希望它可以幫助