斯威夫特的iTunes ScriptingBridge链接错误(Swift iTunes Scrip

2019-10-22 07:22发布

我已经广泛搜索的答案,但都没有找到,所以我问在这里。 我试图读取使用斯威夫特在iTunes目前的轨道,但每当我试图引用任何iTunes的类(iTunesApplication,iTunesTrack等),我收到以下错误:

Undefined symbols for architecture x86_64:  
  "_OBJC_CLASS_$_iTunesApplication", referenced from:  
      __TFC8WAILT_v213iTunesWrapper17getSongWithFormatfS0_FTSS3sepSS10timeOnLeftSb_SS  in iTunesWrapper.o  
      __TMaCSo17iTunesApplication in iTunesWrapper.o  
ld: symbol(s) not found for architecture x86_64  
clang: error: linker command failed with exit code 1 (use -v to see invocation)

任何想法,为什么发生这种情况?

谢谢,
-tlf
PS如果我使用的OBJ-C,它工作得很好。 它只有当我使用雨燕的错误。

Answer 1:

由于斯威夫特的强静态类型的,它与代码链接,它没有任何的实现或二进制的问题。 因此,要使用Objective-C的桥接报有了它,你将很可能需要使用通用SBObject是因为斯威夫特知道这些的实现,即使你的.h声明其他类。

另一种方法是使用脚本生成声明,它可以看到并使用原生斯威夫特文件。 这里是一个Python脚本(全面披露:这是我的),其产生的Objective-C脚本桥接头,然后创建一个本地斯威夫特版本。 这避免了链接器错误和上述SBObject通用打字。



文章来源: Swift iTunes ScriptingBridge linker error