audio unit fails to run in Logic; .exp _Entry undefined in linker

∥☆過路亽.° 提交于 2019-12-25 17:47:08

问题


Background

I am trying to get Apple's example TremoloUnit to run in Logic 9. From various forums and this SO answer, the problem with Apple's examples seems to be that Logic 9 (and many other AU hosts) use old Carbon resources. According to this technical note, adding an appropriate .r file should provide the needed backwards compatability, so I added a .r that matches the sample .plist.

The Problem

If I include the line _TremoloUnitEntry in my .exp, the linker throws this error:

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

However, if I leave that line out (so that the entire .exp consists of _TremoloUnitFactory), Xcode compiles successfully. The resulting component:

  • passes auval -32 -v aufx TREM DEMO
  • runs in AU Lab
  • is detected by Logic's Audio Units Manager and passes its run of auval, but throws this error:
 validation result: successfully validated
 updating properties of AU Tremolo (Effect AU) by Apple Sample Code... Failed!

The Question

How can I get the demo AU to run in Logic? Endless Googling and Apple's outdated docs have failed me. (It would really be great if the example projects weren't still broken out of the box...)

System Details

  • Logic Express 9.1.8 (32 bit)
  • Xcode 6.2
  • Mac OS 10.9.5
  • AU Lab 2.2.2

Update

I wrote a simple gain demo from scratch, and... it works! Kind of. It runs in AU Lab and Logic but doesn't get detected by auval -a. Is there an Xcode project setting that would cause this? I'm new to Xcode and am failing to find a reason why the Apple demo is broken in one way and mine broken in another.


回答1:


Make sure the only entry in your .exp file is _TremoloUnitFactory. You said you already removed _TremoloUnitEntry, so you should be good.

Next, in the Project Navigator, highlight "Info.plist". Select "View=>Utilities=>Show File Inspector" from the menu. In the File Inspector, under "Target Membership", uncheck "TremoloUnitEntry".

Recompile. That should do it.



来源:https://stackoverflow.com/questions/30016751/audio-unit-fails-to-run-in-logic-exp-entry-undefined-in-linker

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!