1

我正在尝试将一个库添加到我的 Rubymotion 项目中,它没有显示任何错误,但我似乎无法访问库中的类,在我的 rakefile 中我有......

app.vendor_project('vendor/iSpeechSDK', :static,
    :products => ["libiSpeechSDK.a"],
    :headers_dir => "Headers")

app.frameworks += ['iSpeechSDK']

Headers目录下的.a文件和.h文件都存在

在我的 app_delegate 我有这个代码......

@sdk = iSpeechSDK.sharedSDK

但我得到错误...

模拟 ./build/iPhoneSimulator-5.0-Development/Mirror Mirror.app (main)> 2012-07-19 10:50:05.978 Mirror Mirror[26195:11903] app_delegate.rb:13:in application:didFinishLaunchingWithOptions:': undefined local variable or methodiSpeechSDK' for # (NameError) 2012-07-19 10:50:05.980 Mirror Mirror[26195:11903] * 由于未捕获的异常“NameError”而终止应用程序,原因:“app_delegate.rb:13:in application:didFinishLaunchingWithOptions:': undefined local variable or methodiSpeechSDK”for #(NameError)'*第一次抛出调用堆栈:(0xa88052 0x417d0a 0x207954 0x5c285 0x5bce1)

4

1 回答 1

4

Laurent 在 Google 网上论坛上的回答

问题是 iSpeechSDK 类名以小写字母开头,这在 Ruby 中不是有效的常量名。

在下一个版本中,您将能够执行 ISpeechSDK.sharedSDK(就像您已经可以访问同样以小写字母开头的常量或枚举一样),但现在,解决方法可以是:

NSClassFromString('iSpeechSDK').sharedSDK

另外,将 .bundle 文件复制到资源文件夹中?构建系统不会自动执行(它只会将应用程序与 .a 库链接)

于 2012-07-19T12:55:47.883 回答