音频单元无法在 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 中运行?无尽的谷歌搜索和苹果过时的文档让我失望了。 (如果示例项目还没有开箱即用,那就太好了……)
系统详情
Logic 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) 标记
使用 Pyaudio 在 Python 中录制音频,错误 ||PaMacCore (AUHAL)|| ... msg=音频单元:在当前上下文中无法执行