AudioSessionGetProperty Undefined Symbols i386

时间:2013-06-16 17:12:56

标签: iphone objective-c avfoundation avaudiosession

我正在尝试根据音频是否已播放来设置我的AVAudioSession类别,在阅读Apple Dev Docs for AVAudioSession后,我想出了这个代码,直接从他们的解决方案中获取我想要完成的内容:

UInt32 otherAudioIsPlaying;                                   // 1
UInt32 propertySize = sizeof (otherAudioIsPlaying);

AudioSessionGetProperty (                                     // 2
                         kAudioSessionProperty_OtherAudioIsPlaying,
                         &propertySize,
                         &otherAudioIsPlaying
                         );

if (otherAudioIsPlaying) {                                    // 3
    [[AVAudioSession sharedInstance]
     setCategory: AVAudioSessionCategoryAmbient
     error: nil];
} else {
    [[AVAudioSession sharedInstance]
     setCategory: AVAudioSessionCategorySoloAmbient
     error: nil];
}

所有内容都正确编译,但是当我尝试构建并运行应用程序时,我得到与AudioSessionGetProperty对应的Mach-O链接器错误。

Undefined symbols for architecture i386:
"_AudioSessionGetProperty", referenced from:
+[AppDelegate setAudioSession] in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我将AVFoundation/AVFoundation.h文件导入到我的AppDelegate(代码正在执行的地方)。 我还将AVFoundation框架导入到项目二进制文件本身。我错过了这个方法所需的另一个框架吗?为什么我会收到此错误?

1 个答案:

答案 0 :(得分:3)

对于可能遇到此问题的其他人:

为了以这种方式获取音频属性,它需要AudioToolbox框架。将该库添加到项目中并导入它,链接器错误将消失。