音频单元无法在 Logic 中运行; .exp _Entry 在链接器中未定义

Posted

技术标签:

【中文标题】音频单元无法在 Logic 中运行; .exp _Entry 在链接器中未定义【英文标题】:audio unit fails to run in Logic; .exp _Entry undefined in linker 【发布时间】:2015-05-03 17:05:34 【问题描述】:

背景

我正在尝试让 Apple 的示例 TremoloUnit 在 Logic 9 中运行。从各种论坛和this SO answer 来看,Apple 示例的问题似乎是 Logic 9(和许多其他 AU 主机)使用旧的 Carbon 资源。根据this technical note,添加适当的.r 文件应该提供所需的向后兼容性,因此我添加了与示例.plist 匹配的.r

问题

如果我在.exp 中包含_TremoloUnitEntry 行,链接器会抛出此错误:

Undefined symbols for architecture i386:
  "_TremoloUnitEntry", referenced from:
     -exported_symbol[s_list] command line option

但是,如果我忽略那一行(这样整个.exp_TremoloUnitFactory 组成),Xcode 编译成功。生成的组件:

通过auval -32 -v aufx TREM DEMO 在 AU 实验室中运行 被 Logic 的音频单元管理器检测到并通过了 auval 的运行,但抛出此错误:
 validation result: successfully validated
 updating properties of AU Tremolo (Effect AU) by Apple Sample Code... Failed!

问题

如何让演示 AU 在 Logic 中运行?无尽的谷歌搜索和苹果过时的文档让我失望了。 (如果示例项目还没有开箱即用,那就太好了……)

系统详情

Lo​​gic Express 9.1.8(32 位) Xcode 6.2 Mac OS 10.9.5 AU 实验室 2.2.2

更新

我从头开始编写了一个简单的增益演示,并且......它有效!有点儿。它在 AU Lab and Logic 中运行,但不会被 auval -a 检测到。是否存在会导致此问题的 Xcode 项目设置?我是 Xcode 的新手,无法找到为什么 Apple 演示以一种方式损坏而我的演示以另一种方式损坏的原因。

【问题讨论】:

你的项目在 github 上或我可以试一试的地方有你的简单增益演示吗? @ruohoruotsi 错过了该评论,抱歉。不,它在任何地方都没有,但幸运的是 Apple 推出了更新的演示项目:developer.apple.com/library/mac/samplecode/sc2195/Introduction/… 【参考方案1】:

确保 .exp 文件中的唯一条目是 _TremoloUnitFactory。你说你已经删除了_TremoloUnitEntry,所以你应该没问题。

接下来,在项目导航器中,突出显示“Info.plist”。从菜单中选择“查看=>实用程序=>显示文件检查器”。在文件检查器中,在“Target Membership”下,取消选中“TremoloUnitEntry”。

重新编译。那应该这样做。

【讨论】:

+1,但我的设置在过去几个月里发生了很大变化,所以我无法验证这是否是问题所在。

以上是关于音频单元无法在 Logic 中运行; .exp _Entry 在链接器中未定义的主要内容,如果未能解决你的问题,请参考以下文章

获取使用 Logic 生成的 midi 序列 (MusicSequence) 标记

logic工程文件是哪一个

NF_Exp2_20164306

使用 Pyaudio 在 Python 中录制音频,错误 ||PaMacCore (AUHAL)|| ... msg=音频单元:在当前上下文中无法执行

Mac OSX 10.7 Lion 音频单元效果模板编译失败

音频单元背景冲突