libpd для ошибок компоновщика iOS Mach-O

Я использую libpd в универсальном приложении для iOS, работающем с iOS 7 и Xcode 5.0.2. libpd работает должным образом (может загружать и взаимодействовать с патчами Pd), но у меня возникают проблемы с использованием внешних объектов.

Вот сообщение об ошибке, которое я вижу:

Ld DerivedData/Build/Products/Debug-iphoneos/BrightHearts.app/BrightHearts normal armv7s
cd /Users/jman/Developer/Sensorium/brighthearts-beta/BrightHearts
setenv IPHONEOS_DEPLOYMENT_TARGET 7.0
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7s -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -L/Users/jman/Developer/Sensorium/brighthearts-beta/BrightHearts/DerivedData/Build/Products/Debug-iphoneos 
-F/Users/jman/Developer/Sensorium/brighthearts-beta/BrightHearts/DerivedData/Build/Products/Debug-iphoneos -filelist /Users/jman/Developer/Sensorium/brighthearts-beta/BrightHearts/DerivedData/Build/Intermediates/BrightHearts.build/Debug-iphoneos/BrightHearts.build/Objects-normal/armv7s/BrightHearts.LinkFileList 
-dead_strip -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=7.0 -framework GLKit -framework OpenGLES -framework SystemConfiguration -framework Security -framework QuartzCore -framework CoreText /Users/jman/Developer/Sensorium/brighthearts-beta/BrightHearts/DerivedData/Build/Products/Debug-iphoneos/libpd-ios.a 
-framework AudioToolbox -framework AVFoundation -framework CoreBluetooth -framework CoreGraphics -framework UIKit -framework Foundation -Xlinker -dependency_info -Xlinker 
/Users/jman/Developer/Sensorium/brighthearts-beta/BrightHearts/DerivedData/Build/Intermediates/BrightHearts.build/Debug-iphoneos/BrightHearts.build/Objects-normal/armv7s/BrightHearts_dependency_info.dat -o 
/Users/jman/Developer/Sensorium/brighthearts-beta/BrightHearts/DerivedData/Build/Products/Debug-iphoneos/BrightHearts.app/BrightHearts

Undefined symbols for architecture armv7s:
  "_allsickles_setup", referenced from:
  -[SENViewController setupPD] in SENViewController.o
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я видел предложение установить флаг «Создать активную архитектуру» в значение YES для подпроекта libpd — это не имеет никакого значения, я все равно получаю ту же ошибку.

Есть ли решение (очевидное или иное) для этой проблемы?


person Jason McDermott    schedule 19.03.2014    source источник


Ответы (1)


мне кажется, что вы на самом деле не компилируете allsickles.c из внешнего Cyclone. В этом файле есть метод void allsickles_setup(void), который, я думаю, вы пытаетесь вызвать для настройки libpd.

Если allsickles.c находится в вашем проекте, возможно, он на самом деле не компилируется, поэтому вам, возможно, придется добавить его в «Источники компиляции» в разделе «Фазы сборки».

person Charles Martin    schedule 21.03.2014
comment
Я понял, что pd-for-ios (github.com/libpd/pd-for-ios) в репозитории есть старый подмодуль libpd, выпущенный в декабре 2012 года. Я заменил его на libpd из основного репозитория (github .com/libpd/libpd), и почти все мои ошибки компилятора исчезли. - person Jason McDermott; 21.03.2014