Статус: Новичок
Группы: Участники
Зарегистрирован: 13.04.2014(UTC) Сообщений: 2 Откуда: Калининград
|
Здравствуйте. Подключила CPROCSP.framework к iOS проекту в соответствии с инструкцией ReadMe.txt. Далее добавила линковку с модулем поддержки считывателя, в соответствии с инструкцией Readers.txt. Я собираю приложение без поддержки считывателя смарт-карт. Добавляю библиотеку readers/librdrpcsc_empty.o соглавно п1 документа Readers.txt. При попытке собрать приложение получаю ошибку
Undefined symbols for architecture i386: "_main", referenced from: start in crt1.o _RegisterApplicationChecksum in CPROCSP ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Скажите пожалуйста, в чем может быть причина такой ошибки и как ее исправить?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
Собираете приложение или библиотеку? undefined символ main присутствует не в librdrpcsc_empty, а в основном бинарнике фреймворка, мы его используем для определения начала сегмента кода при контроле целостности. У вас в приложении, если это приложение, должна быть функция main, при линковке она должна "встретиться" с undefined символом и всё должно быть ок. Если фукнция main есть, но почему-то всё не линкуется, можно там, где она объявлена и реализована у вас в вашем проекте, явно указать видимость:
int __attribute__((visibility("default"))) main(int argc, char *argv[]) |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 13.04.2014(UTC) Сообщений: 2 Откуда: Калининград
|
Собираю приложение (не библиотеку). CPROCSP.framework подключена к проекту в соответствии с инструкцией ReadMe.txt Ошибка возникает только при подключении библиотеки librdrpcsc_empty.o в проект. Если я отключаю библиотеку librdrpcsc_empty.o и вместо нее подключаю библиотеки для работы со смарт-картами Аладдин librdrjacarta.a и libAladdinReader.a, то приложение запускается без ошибок. Указала в функции main своего проекта видимость int __attribute__((visibility("default"))) main(int argc, char *argv[]). Ошибка осталась.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
довольно странно, потому что в описании ошибки явно написано, что undefined символ в CPROCSP:
Undefined symbols for architecture i386: "_main", referenced from: start in crt1.o _RegisterApplicationChecksum in CPROCSP
и он действительно там. И, если посмотреть на символы в librdrpcsc_empty, никакого _main там нет: nm librdrpcsc_empty.o 000000c8 T _SCardBeginTransaction 00000190 T _SCardConnect 00000160 T _SCardDisconnect 00000040 T _SCardEndTransaction 00000000 T _SCardEstablishContext 000002b8 T _SCardGetAttrib 00000238 T _SCardGetStatusChange 00000278 T _SCardListReaders 000000f0 T _SCardReconnect 00000138 T _SCardReleaseContext 00000070 T _SCardStatus 000001e0 T _SCardTransmit 000002f8 S _g_rgSCardT0Pci 00000300 S _g_rgSCardT1Pci
пришлите мне проект посмотреть на kondakova at cryptopro.ru |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 30.05.2018(UTC) Сообщений: 5 Откуда: Севастополь
|
Добрый день, подскажите, пожалуйста, столкнулась с такой же проблемой при подключении CPROCSP.framework к собственному фреймворку (не проекту). Все остальные ошибки были исправлены, осталась только эта. Undefined symbols for architecture arm64: "_main", referenced from: _RegisterApplicationChecksum in CPROCSP ld: symbol(s) not found for architecture arm64
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 30.05.2018(UTC) Сообщений: 5 Откуда: Севастополь
|
Автор: NataliaT Добрый день, подскажите, пожалуйста, столкнулась с такой же проблемой при подключении CPROCSP.framework к собственному фреймворку (не проекту). Все остальные ошибки были исправлены, осталась только эта. Undefined symbols for architecture arm64: "_main", referenced from: _RegisterApplicationChecksum in CPROCSP ld: symbol(s) not found for architecture arm64
Очень жду ответа, добавлю, что поддержку считывателей не делаю.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 29.01.2014(UTC) Сообщений: 172 Откуда: Москва
Поблагодарили: 18 раз в 17 постах
|
Добрый день!
Попробуйте добавить объявление extern "C" int main(int argc, char **argv);
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 30.05.2018(UTC) Сообщений: 5 Откуда: Севастополь
|
Для свифтового фреймворка ошибку получилось исправить добавлением обычного main.mm файла, как для objc проекта с функцией int main(int argc, char *argv[]) { @autoreleasepool { int retVal = UIApplicationMain(argc, argv, nil, nil); return retVal; } } Отредактировано пользователем 8 июня 2018 г. 16:12:15(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close