objective-c - 为简单的命令行程序编译Apple框架

标签 objective-c c command-line terminal

我有一个用 C 和 Objective-C 编写的简单程序。它由位于我桌面上的几个文件组成,我使用以下命令从终端编译这些文件:

gcc -framework Foundation audio.m WavReader.m WavFileCreator.m -o audio

我想用我的代码生成一个音频文件,为此需要 AudioToolbox 框架,我使用它包含在 .h 文件中

#import <AudioToolbox/AudioToolbox.h>

当我编译时出现此错误:

WavFileCreator.m: In function ‘createNewWAV’:
WavFileCreator.m:61: warning: initialization makes integer from pointer without a cast
Undefined symbols for architecture x86_64:
  "_AudioFileCreateWithURL", referenced from:
      _createNewWAV in cckeb4pu.o
  "_AudioFileWriteBytes", referenced from:
      _createNewWAV in cckeb4pu.o
  "_AudioFileClose", referenced from:
      _createNewWAV in cckeb4pu.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

忽略第 61 行的错误,我认为这是一个单独的问题。其他错误似乎与无法访问框架有关。我该如何纠正这个问题?

最佳答案

您必须将 AudioToolbox 框架与 -framework 链接:

$ gcc -framework Foundation -framework AudioToolbox audio.m WavReader.m WavFileCreator.m -o audio

关于objective-c - 为简单的命令行程序编译Apple框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100641/

相关文章:

ruby-on-rails - SHA1 哈希值在我的 Rails 和 Cocoa 应用程序之间不匹配

c - 切换字符大小写,指针问题

macos - 在 Mac 上从命令行上传到 Google Drive

c - Switch 语句始终包含 case 和 default

c - 回调函数的可变参数

php - 如何让 PHP 在命令行中再次工作?

command-line - 如何将命令行参数传递给 gnuplot?

java - 如何指定在 NSMenuItem(最小化窗口指示器)中显示菱形?

ios - UITableViewCell 在用户触摸或点击 Cell 时动画调整大小

objective-c - 如何使用类方法的委托(delegate)(或传递消息)