RubyMotion未加载AudioToolbox框架

5q4ezhmt  于 2023-06-22  发布在  Ruby
关注(0)|答案(3)|浏览(126)

所以我尝试在RubyMotion中使用AudioToolbox,
1、添加

app.frameworks << 'AudioToolbox'

在Rakefile中,
2,并在我的一个简单的视图控制器方法中,简单的添加了

p AudioFileID

3,然后耙,
4,给定一个错误,

uninitialized constant RecorderViewController::AudioFileID (NameError)

显然AudioFileID在AudioToolbox中没有加载,我在CoreAudio中尝试了类似的东西,它工作得很好。我需要要求什么吗?你知道吗?谢谢。

xdyibdwo

xdyibdwo1#

我认为将AudioToolbox添加到您的框架中可能就是加载工具包,除非您在构建过程中看到错误。你不需要要求其他任何东西。
我有一个RubyMotion程序,它可以调用AudioToolbox函数,如AudioFileOpenURLAudioFileGetProperty,而不会出错。因为AudioFileID是一个结构体,所以我认为它不是一个纯常量来使用的。如果您在使用AudioToolbox函数时遇到错误,请更新此问题或开始新的问题。

c86crjj0

c86crjj02#

我在RubyMotion bug tracker上创建了一个ticket,并自己修补了3天,这是我发现的
你必须为你的目标(/Library/RubyMotion/data/ios/6.1/BridgeSupport/AudioToolbox.bridgesupport)的每个iOS版本修补AudioToolbox.bridgesupport,直到这个问题在即将发布的RubyMotion版本中得到修复
替换此行<cftype type='^{OpaqueAudioFileID=}' name='AudioFileID'/>
关于<opaque type='^{OpaqueAudioFileID=}' name='AudioFileID'/>
这样,RubyMotion就不会把AudioFileID当作某个地方定义的结构(因此会出现未初始化的常量错误),并且您可以通过调用Pointer.new AudioFileID.type来示例化指向AudioFileID的指针

egdjgwm8

egdjgwm83#

要使用AudioToolbox框架中的符号,您需要在Ruby代码中显式地要求它们。在这种情况下,在使用框架中的符号之前,您应该在视图控制器文件中要求'audio_toolbox' gem。下面是一个例子:

require 'audio_toolbox'

class RecorderViewController < UIViewController
  def your_method_name
    p AudioFileID
  end
end

确保在项目中安装了'audio_toolbox' gem。如果你还没有这样做,你可以将它添加到你的Gemfile中:

gem 'audio_toolbox'

相关问题