logo
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Alex Vecherov  
#1 Оставлено : 8 августа 2017 г. 14:31:34(UTC)
Alex Vecherov

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.08.2017(UTC)
Сообщений: 4
Беларусь

Здравствуйте. Возникла проблема с линковкой библиотеки CryptoPRO CSP 4.9914. Внедрение библиотеки проводилось по инструкции из файла Readme.txt.
Приложение после подключения библиотеки собирается и запускается на симуляторе. Однако, если следовать пункту 7. В свойствах проекта настроить "Valid Architectures: armv7", "Architectures: Optimized(armv7)". проект на смартфоне запускаться не будет, т.к. отключена архитектура arm64.
Если попробовать добавить архитектуру arm64, возникает ошибка в которой говорится: ld: '/Frameworks/CPROCSP.framework/CPROCSP' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Далее, следуя предложению отключить Bitcode, после сборки появляются ошибки (154 штуки) типа символ не был найден для архитектуры arm64 - ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

XCode Version 8.3.3 (8E3004b)
Compiler for C/C++/Objective-C Apple LLVM 8.1
C++ Language dialect GNU++11 [-std=gnu++11]
C++ Standart library libc++ (LLVM C++ standart library with C++11 support)
iPhone 6 iOS 10.3.3

Undefined symbols for architecture arm64:
"_USE_CACHE_DIR", referenced from:
_use_documents_directory in CPROCSP
_make_csp_directories in CPROCSP
"std::runtime_error::what() const", referenced from:
vtable for CAException in CPROCSP
vtable for Asn1Exception in CPROCSP
vtable for CryptException in CPROCSP
vtable for Asn1DecodeException in CPROCSP
vtable for CAValidateException in CPROCSP
vtable for date_exception in CPROCSP
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find(char const*, unsigned long, unsigned long) const", referenced from:
_make_csp_directories in CPROCSP
+[PaneViewController parseVersion:version_out:build_out:] in CPROCSP
MSCAstdRequest::Submit(int, wchar_t*, wchar_t*, wchar_t*, int*) in CPROCSP
ExtractCert(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in CPROCSP
MSCAstdRequest::GetCACertificate(int, wchar_t*, int, wchar_t**) in CPROCSP
MSCAstdRequest::RetrievePending(int, wchar_t*, int*) in CPROCSP
MSCAstdRequest::GetCAProperty(wchar_t*, int, int, int, int, void**) in CPROCSP
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Отредактировано пользователем 8 августа 2017 г. 14:56:14(UTC)  | Причина: Забыл указать устройство на которое производился билд приложения

Offline Dmitry_Bokovikov  
#2 Оставлено : 8 августа 2017 г. 14:59:08(UTC)
Dmitry_Bokovikov


Статус: Сотрудник

Группы: Участники
Зарегистрирован: 29.01.2014(UTC)
Сообщений: 158
Откуда: Москва

Поблагодарили: 16 раз в 15 постах
Добрый день!

В одном из файлов проекта определите
extern bool USE_CACHE_DIR;
bool USE_CACHE_DIR = false;
После этого уйдет проблема с "_USE_CACHE_DIR, referenced from: ..."

Насчет остальных undefined symbols - это странно, подобные ошибки могли бы возникнуть, если бы была указана C++ Standart library libstdc++

Автор: Alex Vecherov Перейти к цитате
Однако, если следовать пункту 7. В свойствах проекта настроить "Valid Architectures: armv7", "Architectures: Optimized(armv7)". проект на смартфоне запускаться не будет, т.к. отключена архитектура arm64.

Смартфон поддерживает архитектуру armv7, поэтому на на нем должно запускаться с указанием только одной архитектуры armv7

Убедитесь, что наше тестовое приложение CreateFile собирается под arm64 и посмотрите, как оно настроено.
Offline Alex Vecherov  
#3 Оставлено : 8 августа 2017 г. 15:23:15(UTC)
Alex Vecherov

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.08.2017(UTC)
Сообщений: 4
Беларусь

Автор: Dmitry_Bokovikov Перейти к цитате

Смартфон поддерживает архитектуру armv7, поэтому на на нем должно запускаться с указанием только одной архитектуры armv7

Snimok ehkrana 2017-08-08 v 15.08.35.png (72kb) загружен 25 раз(а).

Автор: Dmitry_Bokovikov Перейти к цитате

Убедитесь, что наше тестовое приложение CreateFile собирается под arm64 и посмотрите, как оно настроено.

IMG_0559.PNG (74kb) загружен 19 раз(а).

Так же на сайте сказано, что у данной библиотеки есть поддержка архитектуры arm64
Snimok ehkrana 2017-08-08 v 15.22.45.png (46kb) загружен 7 раз(а).

Отредактировано пользователем 8 августа 2017 г. 15:26:23(UTC)  | Причина: Забыл уточнить

Offline Dmitry_Bokovikov  
#4 Оставлено : 8 августа 2017 г. 15:53:09(UTC)
Dmitry_Bokovikov


Статус: Сотрудник

Группы: Участники
Зарегистрирован: 29.01.2014(UTC)
Сообщений: 158
Откуда: Москва

Поблагодарили: 16 раз в 15 постах
Автор: Alex Vecherov Перейти к цитате

Snimok ehkrana 2017-08-08 v 15.08.35.png (72kb) загружен 25 раз(а).

Укажите в architectures standard - то значение, которое там было изначально
Автор: Alex Vecherov Перейти к цитате

IMG_0559.PNG (74kb) загружен 19 раз(а).

Это из-за архитектуры armv7, если соберете только под arm64, этого предупреждения не будет.
Автор: Alex Vecherov Перейти к цитате

Так же на сайте сказано, что у данной библиотеки есть поддержка архитектуры arm64
Snimok ehkrana 2017-08-08 v 15.22.45.png (46kb) загружен 7 раз(а).

В чем противоречие?
Offline Alex Vecherov  
#5 Оставлено : 8 августа 2017 г. 16:38:08(UTC)
Alex Vecherov

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.08.2017(UTC)
Сообщений: 4
Беларусь

Автор: Dmitry_Bokovikov Перейти к цитате

Укажите в architectures standard - то значение, которое там было изначально

Делал по инструкции просто, исправил.

Автор: Dmitry_Bokovikov Перейти к цитате

Насчет остальных undefined symbols - это странно, подобные ошибки могли бы возникнуть, если бы была указана C++ Standart library libstdc++

Да, билдить разрешает, но все равно остаются странные ошибки. Перепроверил standart library везде libc++. Да и настройки проекта вроде нормальные, изменения из инструкции проводил

Автор: Dmitry_Bokovikov Перейти к цитате

Это из-за архитектуры armv7, если соберете только под arm64, этого предупреждения не будет.

Из-за этого предупреждения и возник вопрос, спасибо :)

Offline Alex Vecherov  
#6 Оставлено : 9 августа 2017 г. 18:38:06(UTC)
Alex Vecherov

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.08.2017(UTC)
Сообщений: 4
Беларусь

Спасибо большое Дмитрий за помощь!
проблема была решена после ликования к проекту библиотеки libc++.1.tbd)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.