#xamarin.ios #static-linking #native-code #testflight #flite
#xamarin.ios #статическое связывание #машинный код #тестовый полет #flite
Вопрос:
Возникли проблемы с отображением этих двух аргументов при компиляции проекта. Любая помощь будет высоко оценена.
-gcc_flags "-L${ProjectDir} -lflite -all_load" -nosymbolstrip -nostrip -cxx -gcc_flags " -lgcc_eh -L${ProjectDir} -ltestflight -ObjC"
flite — это собственная библиотека C, а TestFlight — библиотека Obj-C. Есть идеи, как заставить их хорошо играть вместе?
Библиотека lflite работала отлично, затем я решил добавить TestFlight, и все пошло наперекосяк. Решение компилируется, но вылетает при запуске с:
Sep 30 15:40:18 Dev-iPhone UIKitApplication:com.cognitopia.scando[0x2e64][3288] <Notice>: Native stacktrace:
Sep 30 15:40:18 Dev-iPhone UIKitApplication:com.cognitopia.scando[0x2e64][3288] <Notice>: 0 ScanDo 0x005f9770 mono_handle_native_sigsegv 412
Sep 30 15:40:18 Dev-iPhone UIKitApplication:com.cognitopia.scando[0x2e64][3288] <Notice>: 1 ScanDo 0x005c9788 mono_sigsegv_signal_handler 360
Sep 30 15:40:18 Dev-iPhone UIKitApplication:com.cognitopia.scando[0x2e64][3288] <Notice>: 2 libsystem_c.dylib 0x34f3172f _sigtramp 42
Sep 30 15:40:18 Dev-iPhone UIKitApplication:com.cognitopia.scando[0x2e64][3288] <Notice>: 3 ScanDo 0x005c93f0 mono_jit_runtime_invoke 2800
Ответ №1:
Попробуйте:
-gcc_flags "-force_load ${ProjectDir}/libflite.a -lgcc_eh -force_load ${ProjectDir}/libtestflight.a -ObjC" -nosymbolstrip -nostrip -cxx
Ответ №2:
Объедините оба аргумента и используйте —force_load, поскольку он применяется только к предоставленной библиотеке, вместо —load_all, который влияет на все библиотеки (и может сыграть злую шутку с libgcc_eh .a или libtestflight.a). Это дало бы что-то вроде:
-nosymbolstrip -nostrip -cxx -gcc_flags "-L${ProjectDir} -lflite -force_load ${ProjectDir}/libflite.a -lgcc_eh -ltestflight -ObjC"
Также сообщалось, что для использования testflight SDK требуется использовать опцию компилятора LLVM.