Моего RubyMotion проект строит хорошо, но терпит неудачу на этапе связующего, в частности, при связывании с GoogleAdMobAds
, с ошибкой «дубликат символа»:Повторяющиеся ошибки символа при компоновке AdMob SDK в RubyMotion
Compile ./app/controllers/blahblah_view_controller.rb
# compiling here, everything is awesome, until...
Create ./build/iPhoneOS-6.1-Development/App.app
Link ./build/iPhoneOS-6.1-Development/App.app/APP
duplicate symbol _GAD_MD5 in:
/Users/edd/Projects/ProjectName/vendor/GoogleAdMobAdsSDK/libGoogleAdMobAds.a(md5.o)
/Users/edd/Projects/ProjectName/vendor/GoogleAdMobAdsSDK/libGoogleAdMobAds.a(gad_md5.o)
ld: 1 duplicate symbol for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
rake aborted!
Command failed with status (1): [/Applications/Xcode.app/Contents/Developer...]
/Library/RubyMotion/lib/motion/project/builder.rb:393:in `build'
/Library/RubyMotion/lib/motion/project/app.rb:72:in `build'
/Library/RubyMotion/lib/motion/project.rb:56:in `block (2 levels) in <top (required)>'
Tasks: TOP => build:device
(See full trace by running task with --trace)
Стоит отметить это происходит только при строительстве для устройства. Он отлично работает в симуляторе. Соответствующая Rakefile
линия:
app.vendor_project('vendor/GoogleAdMobAdsSDK', :static)
Эта проблема также возникает при включении в SDK через CocoaPods.
Любые предложения?
force_load заставляет компилятор включать каждый отдельный объект из указанной библиотеки. AdModSDK имеет дублированный объект, который конфликтует с системной библиотекой (возможно), и компилятор указал на это. Если вы не используете force_load, категории могут не загружаться из AdModSDK. Ваше приложение будет сбой при использовании AdModSDK. Флаг force_load работает только на 64-битных OSX или iOS-приложениях, поэтому он работает на симуляторе (32 бита). – fbernardo
Дополнительная информация: http://developer.apple.com/library/mac/#qa/qa1490/_index.html – fbernardo
Понял. Благодарю. :) –