Включить AVFoundation в проект iOS qbs
Я использую Xcode 9.4.1 и Qt 5.11, и в настоящее время у меня есть рабочий файл.pro для запуска моего приложения Qt на iOS.
Просто ради интереса я хотел попробовать qbs, так как мне очень нравится синтаксис. Теперь я попытался написать файл.qbs, который отражает мой файл.pro.
Все компилируется нормально, но при компоновке у меня возникают следующие проблемы при попытке запустить ios-симулятор (и аналогичный для ios, но с другой архитектурой):
Undefined symbols for architecture x86_64:
"_AVAudioSessionCategoryPlayback", referenced from:
-[MyClass enable] in MediaPlayer.mm.o
"_MPMediaItemPropertyArtist", referenced from:
-[MyClass setMediaInfo:artist:] in MediaPlayer.mm.o
"_MPMediaItemPropertyTitle", referenced from:
-[MyClass setMediaInfo:artist:] in MediaPlayer.mm.o
"_OBJC_CLASS_$_AVAudioSession", referenced from:
objc-class-ref in MediaPlayer.mm.o
"_OBJC_CLASS_$_MPNowPlayingInfoCenter", referenced from:
objc-class-ref in MediaPlayer.mm.o
"_OBJC_CLASS_$_MPRemoteCommandCenter", referenced from:
objc-class-ref in MediaPlayer.mm.o
ld: symbol(s) not found for architecture x86_64
Что я сделал в своем файле.pro для включения фреймворков:
LIBS += -framework MediaPlayer -framework AVFoundation
И для.qbs я написал:
cpp.frameworks: base.concat(["MediaPlayer", "AVFoundation"])
also tried:
cpp.frameworkPaths: base.concat(["/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks"])
cpp.frameworks: base.concat(["MediaPlayer", "AVFoundation"])
and:
cpp.frameworks: ["MediaPlayer", "AVFoundation"]
Я застрял с этой проблемой в течение нескольких часов и трудно найти аналогичное использование файлов QBS в Интернете и на Github. Кто-нибудь, кто знает, почему компоновщик не может найти рамки?
РЕДАКТИРОВАТЬ
Я попытался создать новый проект, используя qbs, и у меня возникают похожие проблемы. Вот полный журнал сборки:
19:12:55: Running steps for project Test...
linking Test (x86_64, debug)
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -Wl,-arch,x86_64,-ios_simulator_version_min,10.0,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk,-e,_qt_main_wrapper -stdlib=libc++ -L/Users/john/Qt/5.11.1/ios/lib -L/Users/john/Qt/5.11.1/ios/plugins/platforms -target x86_64-apple-ios10.0-macho -o /Users/john/build-Test-Qt_5_11_1_for_iOS_Simulator-Debug/qtc_Qt_5_11_1_for_iOS_Simulator_Debug/Test.eyJhcmNoaXRlY3R1cmUiOiJ4ODZfNjQiLCJidWlsZFZhcmlhbnQiOiJkZWJ1ZyJ9.260986be/.tmp/Test /Users/john/build-Test-Qt_5_11_1_for_iOS_Simulator-Debug/qtc_Qt_5_11_1_for_iOS_Simulator_Debug/Test.eyJhcmNoaXRlY3R1cmUiOiJ4ODZfNjQiLCJidWlsZFZhcmlhbnQiOiJkZWJ1ZyJ9.260986be/3a52ce780950d4d9/main.cpp.o /Users/john/build-Test-Qt_5_11_1_for_iOS_Simulator-Debug/qtc_Qt_5_11_1_for_iOS_Simulator_Debug/Test.eyJhcmNoaXRlY3R1cmUiOiJ4ODZfNjQiLCJidWlsZFZhcmlhbnQiOiJkZWJ1ZyJ9.260986be/3a52ce780950d4d9/qrc_qml.cpp.o -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Foundation -framework CoreFoundation -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework CoreGraphics -framework Foundation -framework OpenGLES -framework CoreText -framework UIKit -framework QuartzCore -framework CoreText -framework CoreGraphics -framework Foundation -framework CoreFoundation -framework AudioToolbox -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Security -framework CoreFoundation -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Security -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Security -framework CoreGraphics -framework OpenGLES -framework CoreText -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Security -framework OpenGLES /Users/john/Qt/5.11.1/ios/lib/libQt5Core_debug.a -lz -lm -lm -lz -lqtpcre2_debug /Users/john/Qt/5.11.1/ios/lib/libQt5Gui_debug.a -lz -lm /Users/john/Qt/5.11.1/ios/lib/libQt5Core_debug.a -lm -lz -lqtpcre2_debug -lqtlibpng_debug -lqtharfbuzz_debug -lz /Users/john/Qt/5.11.1/ios/lib/libQt5Network_debug.a -lz -lm /Users/john/Qt/5.11.1/ios/lib/libQt5Core_debug.a -lm -lz -lqtpcre2_debug -lz /Users/john/Qt/5.11.1/ios/lib/libQt5Qml_debug.a @/Users/john/build-Test-Qt_5_11_1_for_iOS_Simulator-Debug/qtc_Qt_5_11_1_for_iOS_Simulator_Debug/Test.eyJhcmNoaXRlY3R1cmUiOiJ4ODZfNjQiLCJidWlsZFZhcmlhbnQiOiJkZWJ1ZyJ9.260986be/plugins.list.d -lz -lm /Users/john/Qt/5.11.1/ios/lib/libQt5Network_debug.a /Users/john/Qt/5.11.1/ios/lib/libQt5Core_debug.a -lm -lz -lqtpcre2_debug /Users/john/Qt/5.11.1/ios/lib/libQt5Quick_debug.a -lz -lm /Users/john/Qt/5.11.1/ios/lib/libQt5Qml_debug.a /Users/john/Qt/5.11.1/ios/lib/libQt5Gui_debug.a -lqtlibpng_debug -lqtharfbuzz_debug /Users/john/Qt/5.11.1/ios/lib/libQt5Network_debug.a /Users/john/Qt/5.11.1/ios/lib/libQt5Core_debug.a -lm -lz -lqtpcre2_debug /Users/john/Qt/5.11.1/ios/lib/libQt5Network_debug.a /Users/john/Qt/5.11.1/ios/lib/libQt5Core_debug.a -lm -lz -lqtpcre2_debug -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Foundation -framework CoreFoundation -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework CoreGraphics -framework Foundation -framework OpenGLES -framework CoreText -framework UIKit -framework QuartzCore -framework CoreText -framework CoreGraphics -framework Foundation -framework CoreFoundation -framework AudioToolbox -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Security -framework CoreFoundation -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Security -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Security -framework CoreGraphics -framework OpenGLES -framework CoreText -framework MobileCoreServices -framework Foundation -framework UIKit -framework CoreFoundation -framework Security -framework OpenGLES
Undefined symbols for architecture x86_64:
"_qt_main_wrapper", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Process failed with exit code 1.
The following products could not be built for configuration qtc_Qt_5_11_1_for_iOS_Simulator_Debug:
Test {"architecture":"x86_64","buildVariant":"debug"}
Error while building/deploying project Test (kit: Qt 5.11.1 for iOS Simulator)
When executing step "Qbs Build"
19:12:57: Elapsed time: 00:02.
Я установил Xcode 9.4.1, затем Qt 5.11 для macos и ios.
EDIT2
Он прекрасно работает на рабочем столе, но когда я переключаюсь на ios или ios-simulator, я получаю это предупреждение в своем файле.qbs:
EDIT3
Вот мои настройки QBS для соответствующего комплекта:
1 ответ
AFAIK, символ _qt_main_wrapper входит через плагин платформы. Таким образом, вы можете добавить зависимость самостоятельно:
Depends { name: "Qt.qios" } // I think that's the name...
Или вы можете использовать элемент QtGuiApplication (вместо Product или CppApplication или того, что вы используете сейчас), который позаботится об этом автоматически.